【发布时间】:2017-06-06 09:54:37
【问题描述】:
现在我将virtualenv 用于部署在生产环境中的应用程序。
我正在运行我的应用程序
cd $PROJECT_DIR
venv/bin/gunicorn -c gunicorn.conf.py my_app.wsgi:application
或
cd $PROJECT_DIR
venv/bin/celery worker --app=my_app.celery_tasks
最近我们迁移到 Python 3。最新的 Python 3.6 不适用于 Ubuntu 14.04,所以我自己编译了它。编译它还可以让我从使用 ./configure --enable-optimizations 的优化中受益。
所以我一直在考虑在我的部署中自己编译 Python。但同时保持virtualenv 文件结构,以便我用于在我的虚拟环境中运行应用程序的命令将保持不变。
我见过有人推荐使用pyenv,但我不喜欢它的地方在于它将Python 本身存储在~/.penv 中,而且显然我需要摆弄PATH 环境变量来制作我的命令在我不喜欢的 Cron 和 shell 脚本中工作。如果可能的话,我想将我的所有环境保存在一个目录中。
所以我的问题是,我能否以某种方式将 Python 编译到我的项目目录中的 venv 目录中,以便目录结构与使用 virtualenv 时的目录结构相同?喜欢:
$PROJECT_DIR/
my_app/
venv/
bin/
python
python3.6
celery
gunicorn
...
lib/
python3.6/
site-packages/
celery/
gunicorn/
...
【问题讨论】:
-
Afaik 你不能那样做。如果你想要这样的隔离,请使用 Docker。
-
我很确定这是可能的。而且并不复杂。只是需要一些见解。
标签: python virtualenv pyenv