在Python3.3的venv中正确使用Pip

时间:2013-11-07 23:38:26

标签: python python-3.3

试图找出Python3.3的PEP405实现的预期用途,这是venv规范。这是我第一次深入Python3,因为到目前为止我一直在使用Python2。

运行Linux Mint KDE,它几乎是Debian发行版,我编译并安装了Python 3.3.2。为了尝试这个奇特的新功能,我去了我想要创建一个venv的地方,并运行python3.3 -m venv testenv。它正确地创造了环境。令我困惑的是,根据规范,bin目录中应该有一个pysetup3文件,但是没有这样的文件。我的猜测是它等同于easy_install。

由于env中没有标准安装脚本,我只是下载并运行了easy_install脚本,然后运行easy_install pip以获取我的环境的pip命令。

这个pysetup3脚本是一个旧的想法,没有削减?我应该重新安装easy_install并点击每个新的venv吗?

2 个答案:

答案 0 :(得分:2)

感谢Jim Garrison指点我的方向。似乎PEP453将解决使用venv的新环境中似乎缺少的问题。 PEP453声明在Python安装中默认可用pip,包括显式引用的venv。 PEP453将被包含在Python 3.4中。我想现在在Python 3.3中,我们必须手动安装setuptoolspip,或者继续使用virtualenv

不知道来自PEP405pysetup3是什么,但我想不是所有内容都必须符合规范。 :)

答案 1 :(得分:2)

直到pip成为3.4中Python的一部分,您才可以通过运行文档中提供的this script来创建包含pip的虚拟环境。该脚本只是扩展了venv的EnvBuilder类,以便在创建环境后安装setuptools和pip。

Pip安装到venv的“local / bin”文件夹。您需要将其符号链接到“bin”文件夹,以便在运行“activate”后按预期工作。从shell中键入:

ln -s /path/to/venv/local/bin/pip /path/to/venv/bin/pip

或者,您可以在script中的install_pip()方法中添加两行代码,以便每次都为您执行此操作:

def install_pip(self, context):
    ... (default script code) ...
    # Add these two lines at the end:
    pip_path = os.path.join(context.env_dir, 'local', 'bin', 'pip')
    self.symlink_or_copy(pip_path, os.path.join(context.bin_path, 'pip'))