问题描述
我正在使用 python venv 创建虚拟环境。但是,由于我正在处理具有不同虚拟环境的多个项目,因此我不想每次切换到不同的项目时都手动设置环境变量。
有没有办法在激活 venv 时自动设置 venv 环境变量?
解决此问题的最佳做法是什么?
解决方法
一个好的做法是使用 dotenv
。您可以通过将环境变量放入名为 .env
的文件来加载环境,并且无论何时您想要加载环境,只需使用以下行:
from dotenv import load_dotenv
load_dotenv()
它的优点在于它只存在于您运行单个脚本的范围内,因为它本质上就像多次调用 os.environ['variable'] = 'value'
一样。
激活虚拟环境只不过是获取 shell 脚本。您可以编辑该脚本以设置您喜欢的任何变量。您可能还想编辑 deactivate
的定义以清除或回滚您对环境所做的任何更改。
您需要编写一个 bash 脚本(如果您使用的是 bash shell),您可以在其中指定一个特定的命令,该命令将激活项目 python 环境并在系统环境中添加项目特定的环境变量。并在退出项目python环境时删除环境变量。
但我不认为这是做事的好/正确方式。 @mz 解决方案将是正确的,您可以在其中定义 .env
文件并在其中定义 env 变量。并在项目运行时使用 load_env
读取 env 变量