Pipenv:多环境
Pipenv: Multiple Environments
现在我正在使用 virtualenv
,只是切换到 Pipenv
。今天在 virtualenv 中,我加载了不同的环境变量和设置,具体取决于我是在 development
、production
还是 testing
,通过将 DJANGO_SETTINGS_MODULE
设置为 myproject.settings.development
, myproject.settings.production
,和 myproject.settings.testing
。
我知道我可以设置一个 .env
文件,但是我怎样才能拥有该 .env
文件的多个版本?
您应该根据环境创建具有不同前缀的不同.env
文件,例如production.env
或testing.env
。使用 pipenv
,您可以使用 PIPENV_DONT_LOAD_ENV=1
环境变量来防止 pipenv shell
自动导出 .env
文件并将其与 export $(cat .env | xargs)
.
结合使用
export $(cat production.env | xargs) && PIPENV_DONT_LOAD_ENV=1 pipenv shell
将为生产环境配置环境变量,然后在虚拟环境中启动 shell。
我远不是 Python 大师,但我能想到的一个解决方案是创建 Pipenv scripts that run shell scripts to change the PIPENV_DOTENV_LOCATION
和 运行 您的启动命令。
示例 Pipfile 脚本:
[scripts]
development = "./scripts/development.sh"
development.sh 示例:
#!/bin/sh
PIPENV_DOTENV_LOCATION=/path/to/.development_env pipenv run python test.py
然后运行pipenv run development
现在我正在使用 virtualenv
,只是切换到 Pipenv
。今天在 virtualenv 中,我加载了不同的环境变量和设置,具体取决于我是在 development
、production
还是 testing
,通过将 DJANGO_SETTINGS_MODULE
设置为 myproject.settings.development
, myproject.settings.production
,和 myproject.settings.testing
。
我知道我可以设置一个 .env
文件,但是我怎样才能拥有该 .env
文件的多个版本?
您应该根据环境创建具有不同前缀的不同.env
文件,例如production.env
或testing.env
。使用 pipenv
,您可以使用 PIPENV_DONT_LOAD_ENV=1
环境变量来防止 pipenv shell
自动导出 .env
文件并将其与 export $(cat .env | xargs)
.
export $(cat production.env | xargs) && PIPENV_DONT_LOAD_ENV=1 pipenv shell
将为生产环境配置环境变量,然后在虚拟环境中启动 shell。
我远不是 Python 大师,但我能想到的一个解决方案是创建 Pipenv scripts that run shell scripts to change the PIPENV_DOTENV_LOCATION
和 运行 您的启动命令。
示例 Pipfile 脚本:
[scripts]
development = "./scripts/development.sh"
development.sh 示例:
#!/bin/sh
PIPENV_DOTENV_LOCATION=/path/to/.development_env pipenv run python test.py
然后运行pipenv run development