【问题标题】:How can I make venv install a python3.6 binary?如何让 venv 安装 python3.6 二进制文件?
【发布时间】:2018-08-17 01:09:59
【问题描述】:

当我运行python -m venv 时,venv 创建的虚拟环境目录包括一个名为python 的二进制文件和另一个名为python3 的二进制文件,它只是一个指向python 的链接。 (在我的安装中,python 是 Python 3.6,python2 是 Python 2.7。)

我的问题是,有时(我无法理解后续调用之间有什么区别)它还会创建另一个符号链接 python3.6 指向 python,但有时它不会。我需要这个符号链接(实际上,tox 需要它)。二进制文件 pip3.6easy_install-3.6 始终安装在 virtualenv 中。

有什么方法可以确保python -m venv 创建符号链接python3.6

(免责声明:我正在使用 pyenv 来管理我的 Python 安装,但我可以使用 /usr/bin/python -m venv 重现上述行为)

【问题讨论】:

  • 一般情况下,我使用“python3.6 -m venv myvenv”。这将它与我可能安装的任何其他 python 3.x 区分开来。不知道这是否解决了您的问题,但也许。
  • 我确定正在使用的python版本是3.6,因为它安装了pip3.6easy_install-3.6,但我会尝试
  • 成功了!显然,python 使用 $0 参数中的版本号来决定它将安装哪些二进制版本。谢谢!
  • 为了完整起见,我已将其添加为答案。

标签: python linux python-3.x python-venv virtual-environment


【解决方案1】:

在创建 venvs(python -m venv,而不是 virtualenv)时,我通过在创建调用中包含版本号取得了成功;

python3.6 -m venv myvenv

【讨论】:

  • 如果venv有这个问题..使用venv而不是virtualenv有什么好处?
  • 为了完整起见:pyenv-virtualenv 的 github 问题中的this search 提出了this solution,我发现这非常令人满意:使用pyenv virtualenv 创建virtualenv 时,使用@987654331 @标志指定调用python -m venv时应该使用哪个二进制pyenv-virtualenv。最终的完整命令将类似于 pyenv virtualenv -p python3.6 3.6.4 myvenv
  • @alpha_989;在这个 SO question 中查看 Riaz 的答案; stackoverflow.com/questions/41573587/…
【解决方案2】:

你需要有已经可用的二进制文件才能让 venv 使用它,但如果你有它,使用python2 -m venvpython3 -m venv 应该没关系。如果您想要 3.6,请尝试:

python -m venv python=`which python3.6` ~/envs/py36

【讨论】:

    猜你喜欢
    • 2013-08-12
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2022-08-15
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多