• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧
  • 欢迎加博主微信:jiang_shaobo

使用virtualenv在ubuntu上搭建python多版本开发环境

点滴 admin 4年前 (2015-07-18) 493次浏览 已收录 扫描二维码

ubuntu 13.04默认的python版本是2.7的,想在其上做python3的开发会遇到问题。比如要使用pip安装软件包时,默认安装的就是python2的包。如果想安装python3的包,就需要用到virtualenv了。

virtualenv的官网在http://www.virtualenv.org/en/latest/。如其官方所说,virtualenv 是一个创建独立python环境的工具。其要解决的最基本问题就是库的依赖和版本,以及间接权限(indirectly permisions,没太明白)。

虽然对官方的描述不是太明白,偶还是只python菜鸟啦。不过总之通过它能够解决python2和python3两个环境互不干扰啦。我是这么做的:

首先,安装virtualenv,在默认的python2下的pip就行:

?
1
$ [sudo] pip install virtualenv

创建虚拟环境:

?
1
$ virtualenv -p /usr/bin/python3 py3env

激活虚拟环境:

?
1
$ source py3env/bin/activate

你会注意到shell的提示符行前多了(py3env)字样,这样你就可以放心的使用python3做开发了。先下载个三方库试试吧

?
1
pip install httplib2

大功告成了!

如果要退出python3虚拟环境,输入命令

?
1
$ deactivate

即可。

ubuntu14.10下virtualenv与virtualenvwrapper的安装及使用,有需要的朋友可以参考下。

    
virtualenv的安装:
$ sudo pip install virtualenv

$ sudo apt-get install python-virtualenv

如果是Mac OS X 系统, 就可以用easy_install安装virtualenv:
$ sudo easy_install virtualenv

查看virtualenv的版本号, 或检查系统是否是否安装了virtualenv:
$ virtualenv --version

用virtualenv创建虚拟环境, 一般虚拟环境被命名为venv:
$ virtualenv venv

激活这个虚拟环境:
$ source venv/bin/activate

如果使用微软windows系统, 激活命令是:
$ venvScriptactivate

激活虚拟环境的命令会修改命令行提示符, 加入环境名:
(venv) $

当虚拟环境中的工作完成后, 如果你想回到全局Python解释器中, 可以在命令行提示符下输入deactivate
假如我们要在虚拟运行环境下安装flask框架, 执行以下命令可在虚拟环境中安装Flask
(venv) $ pip install flask

验证Flask是否正确安装:
(venv) $ python >>> import flask
>>>

假如我们要在虚拟运行环境安装django:
(venv) $ pip install django

        
验证django:
$ django-admin.py --help

virtualenvwrapper的安装:
$ sudo pip install virtualenvwrapper

安装完成后, 会在下面的位置生成virtualwrapper的shell脚本。
/usr/local/bin/virtualenvwrapper.sh
在使用virtualenvwrapper时, 需要配置登录的shell初始化脚本, 将virtualenvwrapper.sh的信息读入当前的shell环境。这里以base为例, 通过对用户根目录下(即/home/[username])的.bashrc配置文件进入如下修改即可。
修改.bashrc:
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi


再次读入.bashrc:
$ source ~/.bashrc

我们可以输入命令mkvirtualenv, 看一下其是否可用。
$ mkvirtualenv --help





设置好之后,你就可以通过下面的命令来操作虚拟环境了:



建立虚拟环境:
$ mkvirtualenv env1

确认虚拟环境:
$ ls -la $HOME/.virtualenvs


(env)xx@ubuntu:~$ ls -la /home/xx/.virtualenvs/
总用量 60
drwxrwxr-x 3 xx xx 4096 1月 7 11:29 .
drwxr-xr-x 29 xx xx 4096 1月 13 13:45 ..
drwxrwxr-x 6 xx xx 4096 1月 7 11:31 env
-rwxr-xr-x 1 xx xx 135 1月 7 11:06 get_env_details
-rw-r--r-- 1 xx xx 96 1月 7 11:06 initialize
-rw-r--r-- 1 xx xx 73 1月 7 11:06 postactivate
-rw-r--r-- 1 xx xx 75 1月 7 11:06 postdeactivate
-rwxr-xr-x 1 xx xx 66 1月 7 11:06 postmkproject
-rw-r--r-- 1 xx xx 73 1月 7 11:06 postmkvirtualenv
-rwxr-xr-x 1 xx xx 110 1月 7 11:06 postrmvirtualenv
-rwxr-xr-x 1 xx xx 99 1月 7 11:06 preactivate
-rw-r--r-- 1 xx xx 76 1月 7 11:06 predeactivate
-rwxr-xr-x 1 xx xx 91 1月 7 11:06 premkproject
-rwxr-xr-x 1 xx xx 130 1月 7 11:06 premkvirtualenv
-rwxr-xr-x 1 xx xx 111 1月 7 11:06 prermvirtualenv
(env)xx@ubuntu:~$ 


与virtualenv的相同处与不同处, 其中, 退出虚拟运行环境的命令同样是deactivate, 进入虚拟运行环境的命令变为workon。
退出虚拟环境:deactivate

进入已存在的环境或者切换环境:workon env1或者env2
浏览虚拟环境:workon

删除虚拟环境: rmvirtualenv env1
---------------------------------------------------------------------------------------
在virtualenv, virtualenvwrapper下使用Django

(env)xx@ubuntu:~/workspace$ pip install django
Collecting django
Downloading Django-1.7.2-py2.py3-none-any.whl (7.4MB)
100% |################################| 7.4MB 242kB/s 
Installing collected packages: django

Successfully installed django-1.7.2
(env)xx@ubuntu:~/workspace$ which django-admin.py
/home/xx/.virtualenvs/env/bin/django-admin.py
(env)xx@ubuntu:~/workspace$ 


在virtualenvwrapper虚拟环境下安装MySQLdb模块
 下载MySQLdb源码包后解压, 然后直接进入源码包的根目录下
在虚拟运行环境下直接编译安装MySQLdb, 然后检测MySQLdb模块是否安装。
 
 



$ python setup.py build
$ sudo /home/xx/.virtualenvs/env/lib/python setup.py install

(env)xx@ubuntu:~/下载/MySQL-python-1.2.4b4$ python
Python 2.7.8 (default, Oct 20 2014, 15:05:19) 
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> exit()
(env)xx@ubuntu:~/下载/MySQL-python-1.2.4b4$ 
 
 
 OK, Enjoy it!!!

一、安装apache及apache-python模块:

  1. sudo apt-get install apache2
  2. sudo apt-get install libapache2-mod-python2.7
二、apache python配置
  1. vim /etc/apache2/conf.d/charset,取消AddDefaultCharset UTF-8的注释
  2.  
  3. vim /etc/apache2/mods-available/python.conf,添加:
  4. <Directory /var/www/py>
  5. AddHandler mod_python .py
  6. AddType text/html .py
  7. PythonHandler pytest
  8. PythonDebug On
  9. </Directory>
  10.  
  11. sudo ln -s /etc/apache2/mods-available/python.conf /etc/apache2/mods-enabled/python.conf
  12.  
  13. sudo vim /etc/apache2/sites-available/python,内容如下:
  14. <VirtualHost *:80>
  15. DocumentRoot /var/www/py
  16. ServerName py
  17.  
  18. <Directory /var/www/py>
  19. AddHandler mod_python .py
  20. PythonHandler pytest
  21. PythonDebug On
  22. </Directory>
  23. </VirtualHost>
  24.  
  25. ln -s /etc/apache2/sites-available/python /etc/apache2/sites-enabled/python
  26.  
  27. mkdir -p /var/www/py
  28. chown -R www-data:www-data /var/www/py //用户apache运行的用户,默认是www-data
  29. chmod -R 775 /var/www/py
  30. sudo adduser dave www-data
  31.  
  32. sudo service apache2 restart
  33. 访问:http://127.0.0.1
三、测试是否成功:
sudo vim /var/www/py/pytest.py,注意要与<Directory>里的PythonHandler pytest名称相同:
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. from mod_python import apache
  4.  
  5. def handler(req):
  6. req.content_type = ’text/html’ //请求对象的类型
  7. req.write(’<h1>hello!</h1>’) //req是请求对象,它有一个专有方法:write
  8. return apache.OK
  9.  
  10. chown -R www-data:www-data pytest.py
  11. chmod 775 pytest.py
  12.  
  13. sudo service apache2 restart
  14. 访问:http://127.0.0.1/py/pytest.py
四、virtualenv安装与配置
  1. sudo apt-get install -y python-dev python-setuptools
  2. sudo easy_install virtualenv virtualenvwrapper pip
  3.  
  4. sudo mkdir /home/dave/study/webapps //所有virtualenv环境的工作总目录
  5. sudo chown -R www-data:www-data /home/dave/study/webapps
  6. sudo chmod -R g+rw /home/dave/study/webapps
  7.  
  8. 添加如下行到~/.bashrc:
  9. export VIRTUALENV_USE_DISTRIBUTE=1
  10. export WORKON_HOME=/home/dave/study/webapps
  11. source /usr/local/bin/virtualenvwrapper.sh
  12. export PIP_VIRTUALENV_BASE=$WORKON_HOME
  13. export PIP_RESPECT_VIRTUALENV=true
  14. export PYTHONPATH=/usr/local/lib/python2.7:$PYTHONPATH
  15.  
  16. 然后source ~/.bashrc,如果报错,查看目录属主和权限
创建虚拟环境,并安装相关软件:
  1. cd ~/study/webapps
  2. mkvirtualenv firstenv
  3. pip install “django==1.4.5″,
  4. pip install MySQL-python
  5. //在虚拟环境中安装相关软件,注意,安装mysql-python之前,首先要sudo apt-get install python-dev libmysqlclient-dev,否则会安装失败
  6.  
  7.  
  8. 查看django是否安装成功:
  9. python,进入idle
  10. >>import django
  11. >>print django.VERSION
  12. 1.4.5
virtualenvwrapper常规用法,参考:http://www.cnblogs.com/Phenix_Yang/archive/2012/05/08/2489724.html:
  1. cd webapps
  2. mkvirtualenv NAME //创建虚拟环境
  3. rmvirtualenv NAME //删除虚拟环境
  4. lsvirtualenv //列出所有虚拟环境
  5. workon NAME //进入指定虚拟环境,如果不指定NAME,则列出所有的虚拟环境
  6. deactivate //退出当前虚拟环境
pip常规用法:
pip安装软件时,都是到pypi网站中去找,而pypi只搜集软件包的链接,问题在于链接可能失效,所以pip也是有坑的。
  1. pip freeze //列出所有已经安装的软件包
  2. pip search django //查找名字中带django的软件包
  3. pip install django //安装django,默认安装最新版
  4. pip install “django==1.4.5” //安装软件包时指定版本,还可以使用<、<=、>、>=来指定版本范围,如pip install “django>1.4 <1.5”
  5. pip install -U django //升级django
  6. pip uninstall django //卸载django

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。