【问题标题】:After activate a python virtual environment, typing `python` still get me the version in PATH激活 python 虚拟环境后,输入 `python` 仍然会得到 PATH 中的版本
【发布时间】:2019-06-23 05:39:02
【问题描述】:

我使用的是 Windows 7。我有多个 python 虚拟环境。假设我将venv_1 添加到系统路径。在命令行中,假设我激活了另一个venv_2,现在提示行显示

(venv_2) C:\>

但如果我在这里输入python,它仍然会在venv_1 中运行python。

这是预期的行为吗?

【问题讨论】:

    标签: python python-venv virtual-environment


    【解决方案1】:

    这不是预期的行为,但这可能意味着您在设置虚拟环境或激活它时犯了错误。

    要确定正在运行的版本,请尝试运行:

    where python
    

    无论结果列表中的顶部项目是什么,都将启动 Python Windows 的副本。如果你是对的并且它确实指向venv_1,那么venv_2 中的设置一定有问题。

    通过运行set,您应该能够看到所有环境变量的列表。检查:

    PATH=<long list of directory names, it should have the venv_2\Scripts at the start>
    

    还有:

    _OLD_VIRTUAL_PATH=<the same list, without that entry>
    

    正是这个简单的路径更改导致 Windows 首先在您的虚拟环境中找到 Python,然后在您添加到全局路径中的其他虚拟环境中找到 Python。

    请注意,添加一个虚拟环境的 Scripts 文件夹可能不是一个好主意,因为您只想在激活相应的虚拟环境并相应设置所有环境变量时使用它。

    【讨论】:

    • 谢谢。按照你的步骤,我发现了问题。我之前改过venv_2的路径。对于setPATH 仍然显示到venv_2 的旧路径。环顾四周后,我意识到 venv 无法真正重新定位(嗯……)。我想我会重新创建 venv。
    • 您可以移动虚拟环境,但需要一些额外的工作。更多细节在这里stackoverflow.com/questions/32407365/can-i-move-a-virtualenv - 请注意,在大多数情况下它是不值得的。重新创建 venv 并在 pip freeze &gt; requirements.txt 之后使用类似 pip install -r requirements.txt 的东西快速重新安装软件包往往更容易和更快。
    • 是的,我发现了 --relocatable,它是实验性的。我最终只是重新创建了我的 venv。但是有些包不在 PyPI 上,它们需要特定的安装顺序,所以我必须手动完成。在需求中有没有办法告诉 pip 安装一个本地的whl
    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多