带有新 Python 和旧软件包集的 virtualenv
virtualenv with new Python and old set of packages
我在 CentOS 6
上设置了我的环境,默认 Python 2.6.6
,生产中的 Django
版本是 1.4.1
最近,开始着手将应用程序移植到最新的长期支持 Django 1.8
。在本地,我重构了该应用程序以使其准备就绪。将更改推送到生产时出现问题,使用 Django 1.8 设置 vituralenv
,在导入 Django 的基本测试中出现异常。根本原因很简单,即 Django 1.8 最低运动 Python 2.7
问题是我需要在 Python 2.6.6
用作生产环境的同一主机上使用 Python 2.7.*
和 Django 1.8 设置 virtualenv
Python解释器,这样新的 venv(Python 2.7.*
和 Django 1.8
)包含所有当前安装的 Python 包(我有很多)。
我找到的最佳方法:
- 安装
python 2.7.*
.
- 将这个新安装的 python 用于
virtualenv
。
- 从 python 复制
site-packages
2.6.6
新 Python 2.7.8 - 为全新 Python 安装创建一个新目录
$ cd /var/www/myproject
$ mkdir new_py
$ cd /var/www/ or cd ..
下载、解压并安装 Python 2.7.8
$ wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
$ tar -zxvf Python-2.7.8.tar.gz
$ cd Python-2.7.8
$ ./configure --prefix=/var/www/myproject/new_py/Python-2.7.8/
$ make && make install
在项目目录中创建新的 venv
即 myproject
(将其替换为您自己的项目名称)和新安装的 Python 2.7.8 - 用 -p
标志指定
$ virtualenv -p /var/www/myproject/new_py/Python-2.7.8/bin/python2.7 venv_djangoupgrade
New python executable in venv_py2.7.8/bin/python2.7
Also creating executable in venv_py2.7.8/bin/python
Installing setuptools, pip, wheel...done.
复制已安装的 Python 包 - (或者,技术方法是获取已安装包的列表 $ pip freeze > requirements.txt
,一旦 venv
被激活,执行 $ pip install -r requirements.txt
它将安装软件包列表)
$ cp -R /usr/lib/python2.6/site-packages/* var/www/myproject/venv_djangoupgrade/lib/python2.7/site-packages/
对于 debian 即 Ubuntu
$ cp -R /usr/lib/python2.6/dist-packages/* /var/www/myproject/venv_py2.7_django1.8/lib/python2.7/site-packages/
激活 venv
$ source djangoupgrade_venv/bin/activate
(djangoupgrade_venv) $
如果你只是没有复制 site-packages
但 pip 冻结列表,请在 venv 处于活动状态时执行以下 pip 命令
(djangoupgrade_venv) $ pip install -r requirements.txt
最后 install/upgrade Django
(djangoupgrade_venv) $ pip install -U django==1.8
以root
或使用sudo
执行以上命令
我在 CentOS 6
上设置了我的环境,默认 Python 2.6.6
,生产中的 Django
版本是 1.4.1
最近,开始着手将应用程序移植到最新的长期支持 Django 1.8
。在本地,我重构了该应用程序以使其准备就绪。将更改推送到生产时出现问题,使用 Django 1.8 设置 vituralenv
,在导入 Django 的基本测试中出现异常。根本原因很简单,即 Django 1.8 最低运动 Python 2.7
问题是我需要在 Python 2.6.6
用作生产环境的同一主机上使用 Python 2.7.*
和 Django 1.8 设置 virtualenv
Python解释器,这样新的 venv(Python 2.7.*
和 Django 1.8
)包含所有当前安装的 Python 包(我有很多)。
我找到的最佳方法:
- 安装
python 2.7.*
. - 将这个新安装的 python 用于
virtualenv
。 - 从 python 复制
site-packages
2.6.6
新 Python 2.7.8 - 为全新 Python 安装创建一个新目录
$ cd /var/www/myproject
$ mkdir new_py
$ cd /var/www/ or cd ..
下载、解压并安装 Python 2.7.8
$ wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
$ tar -zxvf Python-2.7.8.tar.gz
$ cd Python-2.7.8
$ ./configure --prefix=/var/www/myproject/new_py/Python-2.7.8/
$ make && make install
在项目目录中创建新的 venv
即 myproject
(将其替换为您自己的项目名称)和新安装的 Python 2.7.8 - 用 -p
标志指定
$ virtualenv -p /var/www/myproject/new_py/Python-2.7.8/bin/python2.7 venv_djangoupgrade
New python executable in venv_py2.7.8/bin/python2.7
Also creating executable in venv_py2.7.8/bin/python
Installing setuptools, pip, wheel...done.
复制已安装的 Python 包 - (或者,技术方法是获取已安装包的列表 $ pip freeze > requirements.txt
,一旦 venv
被激活,执行 $ pip install -r requirements.txt
它将安装软件包列表)
$ cp -R /usr/lib/python2.6/site-packages/* var/www/myproject/venv_djangoupgrade/lib/python2.7/site-packages/
对于 debian 即 Ubuntu
$ cp -R /usr/lib/python2.6/dist-packages/* /var/www/myproject/venv_py2.7_django1.8/lib/python2.7/site-packages/
激活 venv
$ source djangoupgrade_venv/bin/activate
(djangoupgrade_venv) $
如果你只是没有复制 site-packages
但 pip 冻结列表,请在 venv 处于活动状态时执行以下 pip 命令
(djangoupgrade_venv) $ pip install -r requirements.txt
最后 install/upgrade Django
(djangoupgrade_venv) $ pip install -U django==1.8
以root
或使用sudo