您是否应该在 运行 代码时需要在 virtualenv 中才能访问已安装的依赖项?

Are you supposed to need to be in the virtualenv whenever running code in order to access the installed dependencies?

我已经通过 python -m venv virtualenv 设置了一个 virtualenv 文件夹,旁边是我的包含 flask 代码的 backend 文件夹。

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

这是应该如何工作,还是我配置有误?我需要一直使用 virtualenv active 吗?我觉得不对。

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

最好有一个虚拟环境,以便将您的项目依赖项和额外的依赖项分开。对于大项目,可以很方便的收集需要的依赖,不用统计哪些没有用到。

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

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

说你 运行 python -m venv /path/to/venv。虚拟环境在 /path/to/venv 处创建,您将在 /path/to/venv/bin/python.

处找到一个 Python 解释器可执行文件(或符号 link)

然后您可以致电 /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.