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
我安装了 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