首先,如果 X != V,Python 被明确设计为可以轻松同时拥有 Python XY 和 Python VW。PEP 394解释了细节,但基本上,python3
总是意味着 3.x 版本,如果python
也意味着3.x 版本,python2
将意味着 2.x 版本。对于所有表现良好的紧密集成脚本(如pip
or )也应如此ipython
。
这是一件好事,因为许多 POSIX 平台(大多数 linux 发行版、OS X 等)包含依赖于特定 Python 版本的代码,因此您必须能够拥有该版本,但通常您想要更新的版本为您自己的代码。
在大多数平台上,即使 X == V,只要 Y != W,事情仍然很容易,因为默认安装也会为您提供 pythonX.Y,并且设置好的脚本也会这样做。这部分不是 PEP 强制要求的,所以一些 linux 发行版不这样做,或者以不同的方式这样做。不过好在你只需要2.6和3.3,所以不用担心这部分。
因此,如果您只是pip
使用 Python XY, 以任何常规方式安装,您将在 Python XY 的站点包中获得一些新包,可能是一个名为的脚本pip-X.Y
(请注意,它是一个连字符,而不是下划线),通常是一个符号链接pip
和/或pip3
该脚本。所以,你不需要做任何事情来得到这个。
特别是,测试这个序列(文档推荐的系统范围安装方式):
$ curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
$ sudo python3.3 ez_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo python3.3 get-pip.py
......我最终就是这样。
如果没有,您必须向我们提供有关您的平台的详细信息,如何安装每个 Python(大概 2.6 是系统安装的一部分,但不是 3.3),以及如何安装每个pip
.
如果您改为使用sudo yum install python-pip
and sudo yum install python33-pip
(or python3-pip
),那么您得到的正是发行版,因此您最终可能会得到pip
(for 2.6) and pip-3.3
(for 3.3),而不是pip-2.6
andpip-3.3
和符号链接pip
and pip3
。查看各种发行版软件包的 RPM 内容,看起来类似 Red-Hat 的系统的标准名称是python3-pip
,带有指向 的符号链接pip-python3
,有时还有其他名称。
无论如何,除非你混合和匹配不同的方法,否则你几乎肯定会找到一些方法来区分这两个pip
版本。
如果最坏的情况发生了,并且您刚刚获得了一个名为 的脚本pip
,并且您最后安装的那个会覆盖您首先安装的那个……您总是可以安装第一个cp pip pip-2.6
,安装第二个,然后mv pip pip-3.3; ln -s pip-2.6 pip; ln -s pip-3.3 pip3
。
或者,如果你连这个都做不到,那么脚本就很简单,就像这样:
#!/usr/local/bin/python3.3
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.2.1','console_scripts','pip-3.3'
__requires__ = 'pip==1.2.1'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('pip==1.2.1', 'console_scripts', 'pip-3.3')()
)
而且您可以只制作一个副本并复制 s/3.3/2.6/g (如果您以某种方式将不同版本的 1.2.1 安装pip
到不同的站点包中,您可能还必须替换 1.2.1)并且它会起作用。
但它真的,真的不应该走到这一步,然而。setuptools 和 pip 都尊重 PEP 394,任何不需要规则的包管理器或其python 3 包都是无用的。因此,如果您认为这些技巧是必要的,那么您之前可能做错了什么。