有什么方法可以使pip
多个版本的Python正常运行吗?例如,我想用于pip
将内容显式安装到站点2.5安装或站点2.6安装中。
例如,使用easy_install
,我使用easy_install-2.{5,6}
。
而且,是的-我了解virtualenv,不是-这不是解决此特定问题的方法。
pip3.x
实际上管理要安装软件包的python版本pip3.x -V
)(也许可以运行)。或使用@Hugo的解决方案更好地控制许多python版本。
有什么方法可以使pip
多个版本的Python正常运行吗?例如,我想用于pip
将内容显式安装到站点2.5安装或站点2.6安装中。
例如,使用easy_install
,我使用easy_install-2.{5,6}
。
而且,是的-我了解virtualenv,不是-这不是解决此特定问题的方法。
pip3.x
实际上管理要安装软件包的python版本pip3.x -V
)(也许可以运行)。或使用@Hugo的解决方案更好地控制许多python版本。
Answers:
在目前的建议是使用python -m pip
,这里python
是Python的版本,你想使用。这是建议,因为它适用于所有版本的Python和所有形式的virtualenv。例如:
# The system default python:
$ python -m pip install fish
# A virtualenv's python:
$ .env/bin/python -m pip install fish
# A specific version of python:
$ python-3.6 -m pip install fish
先前的答案,留给后代:
从0.8版开始,Pip支持pip-{version}
。您可以像使用它一样easy_install-{version}
:
$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage
编辑:pip更改其架构以使用,pipVERSION
而不是pip-VERSION
在1.5版中使用。如果有,则应使用以下内容pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
检查https://github.com/pypa/pip/pull/1053了解更多详细信息
参考文献:
pip
通过pip
/ easy_install
或get-pip.py
或者你没有python2.7。如果你有python2.7,尝试:pip install --upgrade pip
你应该有pip
和pip-2.7
pip
基于环境变量$ PATH拾取程序。如果要更改“默认” pip程序,请对$ PATH环境变量重新排序。搜索类似“路径环境变量linux”之类的内容,以获取有关$ PATH的更多详细信息。
在Windows中,您可以执行使用通过给定的Python版本的PIP模块Python的发射器,py.exe
如果你选择了Python 3的安装过程中安装它。
py -3 -m pip install packagename
py -2 -m pip install packagename
您甚至可以更加具体,并请求确切的Python子版本:
py -3.6 -m pip install packagename
要获取通过启动器可用的所有已安装Python版本的列表,请运行:
py --list
另外,您可以直接启动所需的Python可执行文件:
C:/path/to/specific/python.exe -m pip install packagename
python2
,python3
,pip2
和pip3
在Windows?
/path/to/python2.{5,6} /path/to/pip install PackageName
不起作用?
为了使它能够在尚未安装pip的任何python版本上运行,您需要下载pip并执行python*version* setup.py install
。例如python3.3 setup.py install
。这样可以解决注释中的导入错误。(由@hbdgaf建议)
python2.7 -m pip install PackageName
我默认情况下安装了python 2.6(Amazon EC2 AMI),但是我的应用程序需要python2.7以及一些外部软件包。假设您已经安装了python2.7和默认的python(在我的例子中是2.6)。这是如何为非默认python2.7安装pip和软件包
为您的python版本安装pip:
curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py
使用特定的pip版本来安装软件包:
pip2.7 install mysql-connector-python --allow-external mysql-connector-python
python3 get-pip.py
很有帮助:后来与pip命令一起使用pip34 install example
Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pip
当我试图python2.6 get-pip.py
它以这种方式在Windows中为我工作:
我将python文件python.py和pythonw.exe的名称更改为python3.py pythonw3.py
然后,我在提示符中运行了此命令:
python3 -m pip install package
其他答案显示了如何在2.X和3.X Python上同时使用pip,但没有显示如何处理多个Python发行版的情况(例如,原始Python和Anaconda Python)。
我总共有3个Python版本:原始Python 2.7和Python 3.5以及Anaconda Python 3.5。
这是我将软件包安装到的方法:
原始Python 3.5:
/usr/bin/python3 -m pip install python-daemon
原始Python 2.7:
/usr/bin/python -m pip install python-daemon
Anaconda Python 3.5:
python3 -m pip install python-daemon
要么
pip3 install python-daemon
更简单,因为Anaconda在用户环境中覆盖了原始Python二进制文件。
当然,在anaconda中安装应使用conda
命令完成,这只是一个示例。
另外,请确保已为该特定python安装了pip。您可能需要手动安装pip。在Ubuntu 16.04中可以使用:
sudo apt-get install python-pip
要么
sudo apt-get install python3-pip
pip也是python包。因此,将模块安装到特定python版本的最简单方法如下
python2.7 /usr/bin/pip install foo
要么
python2.7 -m pip install foo
因此很明显,有多个版本easy_install
和 pip
。这似乎是一个大混乱。无论如何,这就是我在Ubuntu 12.10上为Python 2.7安装Django的目的:
$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin
Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip
$ sudo pip-2.7 install django
Downloading/unpacking django
Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
Running setup.py egg_info for package django
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
Running setup.py install for django
changing mode of build/scripts-2.7/django-admin.py from 644 to 755
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>>
从这里:https : //docs.python.org/3/installing/
这是如何为同时安装linux,mac,posix的各种版本安装软件包的方法:
python2 -m pip install SomePackage # default Python 2
python2.7 -m pip install SomePackage # specifically Python 2.7
python3 -m pip install SomePackage # default Python 3
python3.4 -m pip install SomePackage # specifically Python 3.4
python3.5 -m pip install SomePackage # specifically Python 3.5
python3.6 -m pip install SomePackage # specifically Python 3.6
在Windows上,将py Python启动器与-m开关结合使用:
py -2 -m pip install SomePackage # default Python 2
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3 -m pip install SomePackage # default Python 3
py -3.4 -m pip install SomePackage # specifically Python 3.4
pipenv
在Linux,Mac OS X和其他POSIX系统上,结合使用版本化的Python命令和-m
开关,以运行以下命令的适当副本pip
:
python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage
(也可能提供适当版本的pip命令)
在Windows上,将py
Python启动器与-m
开关结合使用:
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3.4 -m pip install SomePackage # specifically Python 3.4
如果遇到错误,请py -3.4
尝试:
pip install SomePackage
安装多个版本的Python和相应的软件包。
同一Windows机器上的Python版本:2.7,3.4和3.6
安装所有3个版本的Python:
所有3个版本的Python的PATH:
重命名版本的可执行文件:
检查所有版本的命令提示符:
为每个版本分别安装软件包
如果您有多个版本以及多个体系结构(32位,64位),则需要在版本末尾添加-32或-64。
对于Windows,请转到cmd并键入py --list,它将生成您已安装的版本。该列表将如下所示:
Installed Pythons found by py Launcher for Windows
-3.7-64 *
-3.7-32
-3.6-32
以完整命令为例:
py -3.6-32 -m pip install (package)
如果您想更深入,要在特定版本的python上安装特定版本的软件包,请在该软件包之后使用==(version)。举个例子,
py -3.6-32 -m pip install opencv-python==4.1.0.25
这里的大多数答案都解决了这个问题,但是我想添加一些使我/usr/local
在CentOS 7上的python替代安装中不断困惑的东西。当我安装在那里时,由于可以使用pip2.7 install
和它会安装模块。但是,我不知道是为什么我新安装的python版本没有看到我要安装的内容。
事实证明,在CentOS 7中,该/usr/bin
文件夹中已经有一个python2.7和pip2.7 。要为新的python发行版安装pip,您需要专门告诉sudo转到/usr/local/bin
sudo /usr/local/bin/python2.7 -m ensurepip
这应该在您的/usr/local/bin
文件夹中安装了pip2.7 以及您的python版本。诀窍是,当您要安装模块时,您需要修改sudo $PATH
变量以包含它,/usr/local/bin
或者需要执行
sudo /usr/local/bin/pip2.7 install <module>
如果要安装新模块。我花了一辈子的时间才记住那sudo
不是立即看到的/usr/local/bin
。
这是我对这个问题的看法。适用于Python3。主要特点是:
步骤如下:
如果您以其他方式安装了多个额外的python版本,请摆脱它们,例如,删除$ HOME / .local / lib / python3.x等(以及全局安装的版本)。但是不要触摸系统的默认python3版本。
在以下目录结构下的不同python版本的下载源:
$HOME/
python_versions/ : download Python-*.tgz packages here and "tar xvf" them. You'll get directories like this:
Python-3.4.8/
Python-3.6.5/
Python-3.x.y/
...
在每个“ Python-3.xy /”目录中,执行以下操作(在任何步骤中都不要使用“ sudo”!):
mkdir root
./configure --prefix=$PWD/root
make -j 2
make install
virtualenv --no-site-packages -p root/bin/python3.x env
在“ python_versions /”处创建如下文件:
env_python3x.bash:
#!/bin/bash
echo "type deactivate to exit"
source $HOME/python_versions/Python-3.x.y/env/bin/activate
现在,无论何时您希望选择python3.x,都可以
source $HOME/python_versions/env_python3x.bash
进入virtualenv
在virtualenv中,使用以下命令安装您喜欢的python软件包:
pip install --upgrade package_name
要退出virtualenv和python版本,只需键入“ deactivate”
更新
似乎--no-site-packages
已弃用。有一个简单的解决方法:激活virtualenv后,只需将HOME env变量指向实际主目录之外的其他位置即可,即:
export HOME=some/where/else
通常,执行此操作的一种好方法是:
ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
export PYTHONPATH=
,export HOME=/some/other/dir
现在,您应该具有自定义隔离的virtualenv。
例如,如果您将其他版本(例如3.5)设置为默认版本,并想为python 2.7安装pip:
这可能是完全错误的操作(我是python noob),但是我只是进去编辑了pip文件
#!/usr/bin/env python3 <-- I changed this line.
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
pip34
和和一起使用pip35
吗?