试图找出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吗?
答案 0 :(得分:2)
感谢Jim Garrison指点我的方向。似乎PEP453将解决使用venv
的新环境中似乎缺少的问题。 PEP453声明在Python安装中默认可用pip
,包括显式引用的venv
。 PEP453将被包含在Python 3.4中。我想现在在Python 3.3中,我们必须手动安装setuptools
和pip
,或者继续使用virtualenv
。
不知道来自PEP405的pysetup3
是什么,但我想不是所有内容都必须符合规范。 :)
答案 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'))