如何在安装了 python 2 & 3 的情况下使用 pip?(OSX)

Fir*_*ude 5 python pip python-3.x pipenv

我正在尝试让 python 3 在我的 OSX 笔记本电脑上工作。

我需要安装对 python 3 的请求,但它不起作用。

我想我已经设法为 python 2.7 和 python 3 安装了 pip 但是......

每当我使用“pip”时,它都指向 python2...我似乎无法访问 python 3 的 pip?

Sha*_*ger 9

很可能,pip3将安装指向您的 Python 3 安装,因此您的用例可能只需从以下位置切换即可解决:

$ pip install foo
Run Code Online (Sandbox Code Playgroud)

到:

$ pip3 install foo  # Or pip3.7 install foo if you need to disambiguate further
Run Code Online (Sandbox Code Playgroud)

也就是说,当您有许多不同的 Python 安装时,它可能会变得有点复杂,其中pip/pip3可能已安装指向与您正在使用的python/不对应的 Python 版本python3,这可能会非常令人困惑。

如果您知道python&python3是正确的可执行文件,只需使用它pip代表您调用即可。这也很容易,只需检查您的版本以确保它是您期望的版本(例如在我的系统上):

$ python --version
Python 2.7.15rc1
$ python3 --version
Python 3.6.6
Run Code Online (Sandbox Code Playgroud)

然后使用适当的-mpip, 一个标志,通过所选的 Python 作为“主”可执行文件运行已安装的模块/包,pip完全绕过对特定版本化可执行文件的需要。所以如果你想foo在我的机器上安装Python 3.6,你可以运行:

$ python3 -mpip install foo
Run Code Online (Sandbox Code Playgroud)

这在 Windows 上特别有用,在 Windows 上,pip可执行文件通常不存在,或者没有安装在PATH. 相反,使用任何现代 Python 3 版本附带的Windows 启动器(但管理机器上的所有 Python 版本),并用于消除各种版本之间的歧义。例如:

C:\>; Installs foo for latest installed version of Python 3
C:\>py -3 -mpip install foo
C:\>; Installs foo for latest installed version of Python 2
C:\>py -2 -mpip install foo
C:\>; Installs foo for latest installed version of Python 3.6
C:\>py -3.6 -mpip install foo
Run Code Online (Sandbox Code Playgroud)

本质上,任何使用pip都可以通过直接执行 Python 解释器来代替,并-mpip选择将pip包作为“主”可执行文件运行。

这个技巧适用于许多其他带有专用启动器的工具,这些工具通常没有安装在PATH. 我的 Windows 启动快捷方式ipython3从未使用启动器的硬编码路径(例如C:\Program Files\Python36\Scripts\ipython3.exe),而是使用%WINDIR%\py.exe -3 -mIPython. 除了更便携(快捷方式在任何安装了半最新 Python 3 的 Windows 系统上“正常工作”)之外,它还可以自我更新;当我从 3.6 升级到 3.7 时,快捷方式根本不需要更改(我必须py -3 -mpip install ipython再次运行才能重新安装 IPython,但是一旦我这样做了,快捷方式就无缝地开始引用 3.7 安装,无需更改)。