virtualenv+virtualenvwrapper+uwsgi+django配置

本文介绍如何使用virtualenv和virtualenvwrapper在服务器上管理多个Python环境,解决不同项目对Python版本需求的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器上安装比较多的服务时,经常会遇到需要不同python版本的问题。比如我这里一台测试服务器上部署N套Django应用,然后有的依赖Python2.6,有的必须在Python2.7上运行。

最开始为了安装简单,用了一个scl的yum源,安装了python2.7.5,但是urllib2的urlopen不支持context参数,这个从2.7.9才开始支持,于是无奈的又开始了折腾之路。

这次选择了virtualenv来管理多套python环境。

好吧,下面介绍安装步骤,假设系统里已经安装了python2.7.11.

1.pip install virtualenv

        这个没什么难度,安装好就行了。然后选个目录,作为virtualenv的工作目录。注意,这里有个大坑:很多教程里都把这个目录选在了/root下,如果你一直用root账户工作是没有问题的,一旦切换账户就会发现import出错等一堆问题。所以,这里最好不要选/root目录。

        比如我们选了/deploy/.virtualenvs目录,在这个目录下执行virtualenv --python=python2.7 python27,然后ls -l,就可以看到用来存放python2.7环境的python27目录。然后我们source python27/bin/activate,就看到提示符变成了“(python27) XXXX”,这时候就进入python2.7环境了。

        在这个提示符下进行的pip安装等,全都是在虚拟环境上进行的,不影响原有的python环境。

        退出也很简单,deactivate就可以了。

2.pip install virtualenvwrapper

        这个wrapper是个锦上添花的工具,主要就是方便管理virtualenv。安装的时候注意不要在虚拟环境执行pip安装。

        安装完之后,编辑.bash_profile,增加如下内容:

#virtaulenv
export WORKON_HOME=/deploy/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
        保存之后,source ~/.bash_profile,virtualenvwrapper就生效了。

        执行命令workon,就能看到列出来我们已经建好的python27,敲workon python27,就可以进入python2.7的虚拟环境了。退出依旧是deactivate。

        我virtualenvwrapper创建、删除虚拟环境也很方便,有mkvirtualenv和rmvirtualenv等命令提供,可自行Google。

3.uwsgi+django

        这里主要介绍之前提到的坑,我最开始装在了/root目录下,然后运行uwsgi的时候--uid和--gid用了非root账户,然后就出现找不到各种包的情况,调了一整天。最后写了个个小的wsgi.py测试,分别打印root和非root账户的sys.path才发现其中差异,真正坑死。


好吧,就介绍这么多,整体没太多技术含量,就是注意那个坑就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值