我正在使用python venv创建虚拟环境。但是,由于我正在处理几个具有不同虚拟环境的项目,我不想每次切换到不同的项目时手动设置环境变量。
有没有一种方法可以在激活venv时自动设置venv环境变量?
解决这个问题的最佳做法是什么?
一个好的做法是使用dotenv
。您可以通过将环境变量放入名为.env
的文件中来加载环境,并且只要您想加载环境,只需使用以下行:
from dotenv import load_dotenv
load_dotenv()
它的优点是只存在于运行单个脚本的范围内,因为它的工作原理与多次调用os.environ['variable'] = 'value'
类似。
激活虚拟环境只不过是获取一个shell脚本。您可以编辑该脚本来设置任何您喜欢的变量。您可能还需要编辑deactivate
的定义,以清除或回滚对环境所做的任何更改。
您需要编写一个bash-scirpt(如果您使用的是bash-shell(,在其中您指定了一个特定的命令,该命令将激活项目python环境并在系统环境中添加特定于项目的环境变量。并在退出项目python环境时删除环境变量。
但我不认为这是一种好的/正确的做事方式@mz解决方案是正确的,您可以定义一个.env
文件并在其中定义env变量。当项目运行时,使用load_env
读取env变量
这个概念基于Django的两个Scoop。我已经使用venv实现了它。
- 在venv生成的虚拟环境中打开Windows PowerShell脚本
- 脚本位于venv/Scripts/Activate.ps1
- 在文件的底部,您将看到以下代码行:
$env:VIRTUAL_ENV = $VenvDir
- 在该代码下面,输入您的环境变量,如下所示:
$env:VARIABLE_NAME = 'variable_value'
如果您使用命令提示符激活环境,则需要在venv/Scripts/activate.bat 中放置环境变量