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

问题描述

我已经通过python -m venv virtualenv和包含烧瓶代码backend文件夹建立了virtualenv文件夹。

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

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

解决方法

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

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

假设您运行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

,

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...