我正在考虑从 pip & virtualenv 切换到 pipenv。但是在研究了文档之后,我仍然对 pipenv 的创建者如何构建部署工作流一头雾水。
例如,在开发中,我有一个定义环境的 Pipfile
和一个 Pipfile.lock
。使用我要部署的部署脚本
git pull
通过 Github 到生产服务器pipenv install
在部署用户的主目录中创建/刷新环境
但我需要一个位于特定 目录中的 venv,该目录已在 systemd 或 supervisor 中配置。例如:command=/home/ubuntu/production/application_xy/env/bin/gunicorn module:app
pipenv 在某些位置创建环境,例如
/home/ultimo/.local/share/virtualenvs/application_xy-jvrv1OSi
使用 pipenv
部署应用程序的预期工作流程是什么?
最佳答案
您几乎没有选择。
您可以通过
pipenv run
运行您的 gunicorn:pipenv run gunicorn module:app
这会产生轻微的开销,但具有从 $PROJECT_DIR/.env
(或其他 $PIPENV_DOTENV_LOCATION
)加载环境的优势。
您可以设置
PIPENV_VENV_IN_PROJECT
环境变量。这会将 pipenv 的 virtualenv 保留在$PROJECT_DIR/.venv
而不是全局位置。您可以使用现有的 virtualenv 并从中运行 pipenv。如果从一个 virtualenv 运行,Pipenv 将不会尝试创建自己的 virtualenv。
您可以只使用奇怪的 pipenv 创建的 virtualenv 路径。
关于python - pipenv:部署工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48567245/