如何在生产中使用virtualenv运行多个python?

如何在生产中使用virtualenv运行多个python?

我已经安装了 virtualenv 来为我的 django 应用程序运行与系统 Python 不同的 Python 版本。我使用所述方法安装了 Python 2.7.11这里。我已修改我的 uwsgi.ini 文件以利用虚拟环境。当我重新启动 nginx 和 uwsgi 时,我的 uwsgi 日志中出现以下错误:

ImportError: /home/me/python2711/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_Replace
unable to load app 0 (mountpoint='') (callable not found or import error)

从我读过的其他文章中(见这里举个例子),这个问题似乎与两个不同版本的 python 相互冲突有关,而我认为 virtualenv 就是为了解决这个问题。

我的问题是,我需要在配置/安装中进行哪些更改才能使我的 django 应用程序在安装的 Python 2.7.11 上运行,而不是在系统安装的 2.7.3 上运行?

编辑

针对下面@TheBrownOne的评论,我确实在本地安装了最新版本,/usr/local/lib/python2.7.11并将其指定为我的虚拟环境的 Python 版本

virtualenv python2711 --python=/usr/local/lib/python2.7.11/bin/python

作为我原始路线图的一部分。它仍然导致此错误。

答案1

virtualenv用于管理 Python 包依赖项,而不是 Python 本身的版本。如果您想要拥有 Python 本身的特定版本,那么查看 Docker 容器可能会有所帮助。Docker 容器能够完成您所描述的任务。

或者您可以在本地某处安装 2.7.11 版本的 Python:

wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
tar -zxvf Python-2.7.11.tgz
cd Python-2.7.11
mkdir ~/.localpy
./configure prefix=/home/$USER/.localpy
make
make install

然后修改你的虚拟环境以包含-p /home/$USER/.localpy/bin/python2.7

相关内容