以下操作环境均为Ubuntu !!!其他环境不一定如此,比如文中的sqlite3等报错在centos似乎就不会报错
一、pyenv (python 多版本管理器)
(1)pyenv安装
root@ubuntu64:cd /root #进入root目录
root@ubuntu64:~# git clone git://github.com/yyuu/pyenv.git .pyenv #源码安装pyenv
root@ubuntu64:/etc/profile.d# touch pyenv.sh #穿在/etc/profile.d/文件夹下创建pyenv.sh文件,便于管理环境变量
root@ubuntu64:/etc/profile.d# vi pyenv.sh #编辑shell文件,把环境变量添加进去
export PYENV_ROOT="$HOME/.pyenv" #$HOME意味着当前用户的根目录,即~
export PATH="$PYENV_ROOT/bin:$PATH" #注意一定要加上当前用户(这里是root)自带的环境变量$PATH
eval "$(pyenv init -)"
root@ubuntu64:/etc/profile.d# source /etc/profile.d/pyenv.sh #用source是环境变量立马生效
(2)pyenv教程
pyenv version #查看当前python版本
pyenv verions #查看pyenv下可以切换的python版本
pyenv install 3.5.2 #安装python3.5.2 版本,若安装别的版本:pyenv install 2.7.1 等
pyenv uninstall #卸载对应pythonv版本
pyenv which python #显示当前python的安裝路径
pyenv install --list #能够安装的所有python版本
PS:
其中对于第一次使用pyenv install 的时候与ubuntu会报错(SSL/TLS未安装),如下图:
解决办法:
sudo apt-get install libssl-dev #安装对应包即可
二、virtualenv (虚拟环境管理器,virtualenv实际上是一个python包)
(1)virtualenv 安装
root@ubuntu64:~# sudo apt-get install python3-pip#安装pip3,pip 安装不了virtualenv
root@ubuntu64:~# pip3 install virtualenv #安装virtualenv
(2)virtualenv 教程
以我要创建python3.5.2和python2.7的虚拟环境为例子:
#1 按照此时环境默认的python版本创建
root@ubuntu64:~# pyenv global 3.5.2 #设置pyenv 安装的3.5.2为系统默认版本
root@ubuntu64:~# virtualenv env352 #创建名为env352的虚拟python环境,但是要提醒的是virtualenv会按照此时系统默认的python环境和路径来对应env352环境,所以既然我们要创建虚拟环境,就是希望单独来使用python各种版本于系统自带的分开,所以在执行这一步之前我会pyenv global 3.5.2一下。
root@ubuntu64:~# ls #查看目录下是否有env352这个目录
root@ubuntu64:~/env352# source bin/activate #启动352的环境,此时所有关于python的操作都是基于pyenv gloabl 3.5.2的python3.5.2下来实现的
(env352) root@ubuntu64:~/env352# deactivate #退出环境
#2 不按照系统版本创建,指定一个python的路径来创建
root@ubuntu64:~# virtualenv -p /usr/bin/python env27 #指定某个具体的python版本创建名为env27的环境
virtualenvwrapper是virtualenv的扩展工具,可以更方便的创建、删除、复制、切换不同的虚拟环境。
(1)virtualenvwrapper 安装
root@ubuntu64:~#source env276/bin/activite #先进入随便一个由virtualenv创建的虚拟环境
(env276)root@ubuntu64:~# pip3 install virtualenvwrapper # 安装
(env276)root@ubuntu64:~# mkdir workspaces #创建一个工作目录用于virtualenvwrapper的工作目录,用其安装的python环境在都在这个工作目录里面
(env276)root@ubuntu64:~# which is virtualenvwrapper.sh #记住这个路径
/root/.pyenv/shims/virtualenvwrapper.sh
(env276)root@ubuntu64:~# export WORKON_HOME="~/workspaces" #解释virtualenvwrapper的工作目录
(env276)root@ubuntu64:~#source /root/.pyenv/shims/virtualenvwrapper.sh #激活virtualenvwrapper.sh
(env276)root@ubuntu64:~#deactivite #退出env276环境
root@ubuntu64:vi /~.bashrc #把激活写入环境变量,不用每次激活了
export WORKON_HOME="~/workspaces"
source /root/.pyenv/shims/virtualenvwrapper.sh
#这时候就可以用virtualenvwrapper的教程中的命令了,而且此时的环境工作目录会在刚才的workspace下,比如你mkvirtualenv env342,这时env342就在workspace目录下。
(2)virtualenvwrapper 教程
mkvirtualenv spider # 创建环境
workon spider #进入环境,不用soure bin/activite一样麻烦了
deactivate #退出环境
rmvirtualenv spider #删除环境
PS:
1、我发现好像必须要进virtualenv 创建的虚拟环境(比如上面的的env276)下安装和激活才能成功,也就是说要在env276下pip install virtualenvwrapper 和source /…/virtualenvwrapper.sh,不然会报错。反正我控制变量试了好多次,必须在一个virtualenv的环境下(比如上面的的env276)安装和激活才能成功完成virtualenvwrapper的配置。也就是验证了那句话,不许先有virtualenv才能再安装virtualenvwrapper!!!!
2、mkvirtualenv spider的时候,但是要提醒的是virtualenvwrapper会按照系统默认的python环境和路径来对应spider环境,所以既然我们要创建虚拟环境,就是希望单独来使用python各种版本于系统自带的分开,所以在执行这一步之前我会pyenv global 3.5.2一下,即使用了由pyenv下载的python版本来创建该虚拟环境,与系统的版本隔离开来。
四、 ubuntu让我很难受
pyenv下的python版本:sqlite3报错和mysql-python安装的报错
本以为安装好pyenv和virtualenv后就完事大吉了,但是现在出现了两个问题。
1、在pyenv安装的python下运行django项目会报错、
ImportError: No module named '_sqlite3'
我尝试了很多中方法解决,毕竟linux水平一般,暂时为解决,放着先,但是我看别人写的明明也是ubuntu环境居然能成功我实在想不通
2、放弃自带的sqlite3,安装配置mysql的时候报错
panda@ubuntu64:~$ sudo apt-get install mysql-server
panda@ubuntu64:~$ sudo apt-get install mysql-client
(env352)panda@ubuntu64:~$ pip3 install mysql-python #这一步报错
ImportError: No module named 'ConfigParser'
在/env352/lib/python3.5/site-packages/backports有一个小写的configparser的py包,按照网上的说法改名字为ConfigParser就可以了,但是我mv configparser ConfigParser后依然报错,所以我懒得用pyenv的python了,我打算用自带的python或者下载去官网下载完整版的python再来virtualenv环境(virtualenv -p /python指定版本/ env_name)
3、 上面的报错全部是基于pyenv下载的python才发生的,于是我决定按照(二)中的方法2,指定具体的非pyenv下载的python版本
#如此以来我解决不了pyenv的python问题,pyenv于没用了,可以全部删除重新开始,也就是说此时我什么都没有安装
panda@ubuntu64:~#sudo apt-get install virtualenv #下载virtualenv
#指定/usr/bin/python3.5为版本创建名字为env352的环境
panda@ubuntu64:~$ virtualenv -p /usr/bin/python3.5 env352
panda@ubuntu64:~$source env352/bin/activate #进入环境
(env352) panda@ubuntu64:pip install django #安装django
(env352) panda@ubuntu64:~/env352$ mkdir project_dir #建立一个工程目录
(env352) panda@ubuntu64:~/env352$ cd project_dir/ # 进入目录
(env352) panda@ubuntu64:~/env352/project_dir$ django-admin.py startproject mysite #创建项目
(env352) panda@ubuntu64:~/env352/project_dir/mysite$ python manage.py runserver #运行项目(成功如下图)
终端:
浏览器: