使用pip为特定的Python版本安装模块

231

在Ubuntu 10.04上,默认安装了Python 2.6,然后我又安装了Python 2.7。如何使用pip install来为Python 2.7安装软件包。

例如:

pip install beautifulsoup4
默认情况下,安装Python 2.6会安装BeautifulSoup。
当我执行以下操作时:
import bs4

在 Python 2.6 中可以工作,但在 Python 2.7 中会报错:

No module named bs4

https://docs.python.org/3.4/installing/ - alvas
1
可能是处理多个Python版本和PIP的问题?的重复。 - Trevor Boyd Smith
18个回答

348

或者,由于pip本身就是用Python编写的,您可以使用要安装包的Python版本直接调用它:

python2.7 -m pip install foo

2
由于我正在虚拟环境中使用pip安装(但在某些情况下需要针对系统Python运行,并设置PYTHONPATH - 例如使用任何依赖于wxPython的东西时),这是适合我的命令。 - Aaron D
9
Python2和Python3所有问题的最佳解决方案! - Harsh Vardhan Ladha
9
我应该指出,在Python中调用模块的正确方式是使用“python 2.7 -m pip install foo”。 - llrs
2
我无法为这个答案点赞足够多。 最终解决了DietPi(树莓派发行版)上的这个痛苦问题。 - Pitto
1
我很惊讶这个答案获得了这么多赞。实际上,我并不真正理解它为什么有效。 - Turion
显示剩余13条评论

74

使用针对您要安装新软件包的Python实例安装的pip版本。

在许多发行版中,可能有单独的python2.6-pippython2.7-pip软件包,使用类似于pip-2.6pip-2.7的二进制名称调用。如果您的发行版中没有所需目标的pip软件包,您可以查找setuptools或easyinstall软件包,或者使用virtualenv(它将始终在生成的环境中包括pip)。

如果您无法在发行版中找到任何内容,则可以在pip的网站上找到安装说明


9
我没有pip-2.6也没有pip-2.7。 - torayeff
2
我尝试了这个 easy_install -d /usr/local/lib/python2.7/ beautifulsoup4,但它不起作用,你所说的 legwork 是什么意思? - torayeff
3
同样适用于easy_install和pip——您应该使用适用于要安装软件包的解释器构建的版本。 "legwork"是一个口语化的词汇,指的是努力,通常是一种不特别具有智力挑战性但可能耗费时间的努力(可以想象成需要花费时间四处走动的工作)......在这种情况下,是指查看Ubuntu软件包列表。 - Charles Duffy
1
@torayeff...如果你找不到针对Python 2.7的Ubuntu pip或easy-install软件包,你可以按照我在答案中提供的链接中的说明手动安装pip;只需确保在执行这些说明时使用python2.7可执行文件即可。 - Charles Duffy
1
对于我在CentOS 7上,可执行文件的名称是pip3.7而不是pip-3.7。 - monotasker
显示剩余2条评论

62

您可以使用相应的Python版本来执行pip模块:

Python 2.6:

python2.6 -m pip install beautifulsoup4

Python 2.7

python2.7 -m pip install beautifulsoup4

3
我曾多次在互联网上搜索此命令,我猜大部分人都使用虚拟环境来解决这个问题,但对我而言,这种方式不太可行。 - Dave Liu
如果我在调用pip安装beautifulsoup4的python脚本中,该怎么办?我如何确保脚本被使用了-m标志调用? - Ogen
这是我谜题的最后一块,谢谢!对于我来说,pippip3都被锁定在python3.X上,因此我不得不使用这种方法作为安装python2.7的pip的迂回方式。 - airdas
12
py -3.8 -m pip install beautifulsoup4 对我有效。 (翻译:This command "py -3.8 -m pip install beautifulsoup4" worked for me.) - Hzzkygcs
安装特定版本的pip:python3.您已安装的版本 -m ensurepip,然后您可以使用python3.您已安装的版本 -m pip install 您想要的包。 - Allexj

36

在Windows系统中,您可以通过指定Python版本(需要确保启动程序在您的路径上)来执行pip模块。

py -2 -m pip install pyfora

2
谢谢。在我的情况下起作用了。我有3.4和3.7版本。我必须运行 py -3.7 -m pip install -r requirements.txt 来使用与python 3.7相关联的pip。 - rodrigorf
3
这应该是被接受的答案。在此之上的其他答案都不起作用。 - NL23codes
我现在想知道为什么这个有效而其他的不行。是因为它是Python3吗? - Kyle Johnson

30
您可以使用此语法。
python_version -m pip install your_package
例如,如果您正在运行python3.5,并将其命名为“python3”,并且想要安装numpy包。
python3 -m pip install numpy

这就像我的答案,但更好,因为它不需要摆弄系统路径。 - Turion
看起来这现在应该是最好的答案。对我也完美地起作用了。 - LogicOnAbstractions
安装特定版本的pip:python3.您已安装的版本 -m ensurepip,然后您可以使用python3.您已安装的版本 -m pip install 您想要的包。 - Allexj

24

我已经在Windows机器上尝试过它,它可以工作。

如果你想要安装Python 3.7版本的OpenCV,以下是安装方法!

py -3.7 -m pip install opencv-python

我可以在没有管理员权限的情况下做到这一点吗? - Naveen Reddy Marthala
@NaveenKumar 是的,你可以。这些包通常会安装在C:\Users{user.account}\AppData\Roaming\Python\Python37\site-packages。 - Dangerous Dev

6

另外,如果您想使用特定版本的Python安装软件包的特定版本,则可以按照以下方式操作

sudo python2.7 -m pip install pyudev=0.16

如果“=”不起作用,请使用“==”

x@ubuntuserv:~$ sudo python2.7 -m pip install pyudev=0.16

无效的要求:“pyudev=0.16” “=”不是有效的运算符。您是否意味着“==”?

x@ubuntuserv:~$ sudo python2.7 -m pip install pyudev==0.16

可以正常工作


1
给任何未来的访问者,请查看pip制造商的此警告,了解为什么您永远不应该使用sudo命令来运行pip。如果您认为需要使用sudo,那么您可能正在修改系统拥有的文件,这些文件只应由系统的软件包管理器进行修改。最好通过传递“--user”将软件包安装到您的用户目录中,甚至更好的选择是使用虚拟环境。 - Brian61354270
安装特定版本的pip:python3.您已安装的版本 -m ensurepip,然后您可以使用python3.您已安装的版本 -m pip install 您想要的包。 - Allexj

5
安装模块的方法是,首先找到Python所在版本的文件夹(打开命令提示符窗口并输入where python以列出所有Python安装路径),复制所选版本的路径,然后在命令行界面中导航到相同的文件夹并运行pip install命令。例如:
cd "c:\users\name_of_python_folder\python.exe" -m pip install beautifulsoup

这应该正常工作。

4

如果你同时安装了Python的2.7版本和3.x版本,那么只需要将3.x版本的Python可执行文件重命名为"python.exe"至"python3.exe"。现在你可以单独使用两个版本的pip。如果你通常输入"pip install ",它会默认使用2.7版本。如果你想在3.x版本上安装它,你需要将命令写作"python3 -m pip install "。


3

Python 2

sudo pip2 install johnbonjovi  

Python 3

sudo pip3 install johnbonjovi

4
如果你安装了多个python3版本,这种方法就不适用了。我同时安装有3.43.5版本,但我无法通过pip install3.4安装任何软件包。 - byxor
对于任何未来的访问者,请查看pip制造商的此警告,了解为什么您绝不能使用sudo与pip。如果您认为需要使用sudo,则可能会修改系统拥有的文件,这些文件只应由系统的软件包管理器进行修改。通过传递--user将软件包安装到用户目录中,或者更好地使用虚拟环境。 - Brian61354270

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接