5

只是想弄清楚 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为我的 env 获取 pip 命令。

这个 pysetup3 脚本是一个没有成功的旧想法吗?我应该在每个新的 venv 上重新安装 easy_install 和 pip 吗?

4

2 回答 2

2

在 pip 在 3.4 中成为 Python 的一部分之前,您可以通过运行文档中提供的此脚本来创建包含 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

或者,您可以在脚本中的 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'))
于 2013-11-09T07:14:24.740 回答
2

感谢 Jim Garrison 为我指明了方向。似乎PEP453将解决使用venv. PEP453 声明pip默认情况下将在 Python 安装中可用,包括显式引用的venv. PEP453 计划包含在 Python 3.4 中。我猜现在在 Python 3.3 中,我们必须手动安装setuptoolsand pip,或者继续使用virtualenv.

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

于 2013-11-08T20:31:40.847 回答