python - 完全隔离的Python环境

标签 python virtualenv pyenv

现在,我正在使用 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/
                    ...

最佳答案

您可以在创建 virutalenv 时指定 Python 二进制文件:

virtualenv env -p /path/to/compiled/python3.6

关于python - 完全隔离的Python环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41780092/

相关文章:

python - SQLALCHEMY - 遍历数据

Python 相当于 Ruby 的 each_with_index?

python - 注释中的字符出错

python - 通过 pyenv 安装的解释器不会添加到 $PATH

python - 无法在 MacOS 11.1 上使用 pyenv 安装带有共享库的 Python 构建

python - 使用完整路径时 pyenv virtualenv 激活不起作用

python - 比较两个元组列表中元素之间的元素

macos - virtualenvwrapper.sh 不运行

python - Twilio VirtualENV 导入失败

python - nginx + uwsgi + 虚拟环境。里面装的是什么?