pip 和 OS 之间的包版本差异?

Package version difference between pip and OS?

我安装了 Debian OS 和 python 2.7 版。但是我有一个关于包 six 的奇怪问题。我想使用 1.10 版本。

我已经通过 pip 安装了六个 1.10:

$ pip list
...
six (1.10.0)

但是当我运行下面的脚本

python -c "import six; print(six.__version__)"

它说 1.8.0

原因是OS安装的veriosn不一样:

$ sudo apt-cache policy python-six
python-six:
Installed: 1.8.0-1
Candidate: 1.8.0-1
Version table:
    1.9.0-3~bpo8+1 0
      100 http://172.24.70.103:9999/jessie-backports/ jessie-backports/main amd64 Packages
*** 1.8.0-1 0
    500 ftp://172.24.70.103/mirror/jessie-debian/ jessie/main amd64 Packages
    500 http://172.24.70.103:9999/jessie-debian/ jessie/main amd64 Packages
    100 /var/lib/dpkg/status

如何强制python使用通过pip安装的包?

您可以为此使用 virtualenv

pip install virtualenv

cd project_folder
virtualenv venv

virtualenv venv 将在当前目录中创建一个文件夹,其中将包含 Python 可执行文件,以及可用于安装其他包的 pip 库的副本。虚拟环境的名称(在本例中为 venv)可以是任何名称;省略名称会将文件放在当前目录中。

设置想要的 python 解释器

virtualenv -p /usr/bin/python2.7 venv

激活环境

source venv/bin/activate

从现在开始,您使用 pip 安装的任何包都将放置在 venv 文件夹中,与 global Python 安装隔离。

pip install six

现在你 运行 代码。完成后,只需停用 venv

deactivate

另见 the original resources