激活venv时是否有自动加载环境变量的方法



我正在使用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 中放置环境变量

相关内容

  • 没有找到相关文章

最新更新