【问题标题】:Are you supposed to need to be in the virtualenv whenever running code in order to access the installed dependencies?您是否应该在运行代码时需要在 virtualenv 中才能访问已安装的依赖项?
【发布时间】:2020-12-25 11:12:28
【问题描述】:

我已经通过 python -m venv virtualenv 设置了一个 virtualenv 文件夹,以及包含烧瓶代码的 backend 文件夹。

但是,当我运行烧瓶代码时,它找不到烧瓶模块。我在 virtualenv 处于活动状态时安装了它,如果我在 virtualenv 处于活动状态时尝试运行它,那么它可以正常工作并找到烧瓶。但是,如果我停用 virtualenv,就没有骰子了。它找不到依赖项。

这是应该如何工作的,还是我配置错误?我是否需要始终使用活动的 virtualenv?对我来说似乎是错误的。

【问题讨论】:

  • 是的,你需要在你的venv中
  • 如果你想在 venv 之外使用模块,那么将它们安装在 venv 之外(全局)

标签: python virtualenv python-venv


【解决方案1】:

实际上,当你在虚拟环境中安装依赖项时,你必须在运行项目之前激活它,但你也可以通过终端(虚拟环境之外)直接将依赖项安装到系统中并且可以运行项目。

最好有一个虚拟环境,以使您的项目依赖项和额外的依赖项分开。对于大项目,您可以轻松收集必要的依赖项,而无需计算未使用的依赖项。

【讨论】:

    【解决方案2】:

    是的,这是预期的行为。但是……

    您不需要“激活”任何虚拟环境。重要的一点是确保使用位于虚拟环境中的解释器。

    假设您运行python -m venv /path/to/venv。虚拟环境在/path/to/venv 创建,您将在/path/to/venv/bin/python 找到一个Python 解释器可执行文件(或符号链接)。

    然后您可以致电/path/to/venv/bin/python -m pip install flask。还有/path/to/venv/bin/python /path/to/some_script.py。这些都将利用虚拟环境隔离。


    而当你激活虚拟环境时,/path/to/venv/bin 目录被放置在PATH 环境变量的顶部,这样当你输入python 时,第一个python找到的可执行文件自动为/path/to/venv/bin/python。

    【讨论】:

    • 非常有趣的一点!有什么简单的方法可以确保当我在这个项目目录中时,它使用那个解释器?我想我可以为它添加一个 bash 别名,这很有效,但如果它完全是“优雅的”,那就不行了。
    • 不确定我是否正确理解了您的要求。当您cd 进入项目目录时,也许您要求虚拟环境自动“激活”。这有点困难,因为严格来说虚拟环境和特定项目目录之间没有关系。只有你才能确定。您可以决定自己遵循一个特定的约定,也许可以找到一个适合该约定的工具。 -- stackoverflow.com/questions/45216663/…
    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多