一、本篇目标
安装pyenv (多版本管理工具),并且熟悉基本命令,查看、安装特定版本、切换等
安装pyenv-virtualenv (隔离环境用的)
利用uwsgi部署Django
二、安装pyenv
pyenv 是为了解决同一个系统中不同版本python并存的问题,比如说你的应用A需要python2.7版本, 应用B需要python3版本的问题,就可以利用pyenv解决
2.1、下载pyenv, 下载位置是$HOME/.pyenv ,也可以自己选择合适的位置
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2.2、设置当前用户的环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
2.3 、添加pyenv init到shell以启用填充程序和自动完成功能
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
2.4、执行当前shell,使其生效
source .bash_profile exec "$SHELL"
2.5、验证完成,输入pyenv
[root@host src]# pyenv pyenv 1.2.7-1-g7190216 Usage: pyenv <command> [<args>] Some useful pyenv commands are: commands List all available pyenv commands local Set or show the local application-specific Python version global Set or show the global Python version shell Set or show the shell-specific Python version install Install a Python version using python-build uninstall Uninstall a specific Python version rehash Rehash pyenv shims (run this after installing executables) version Show the current Python version and its origin versions List all Python versions available to pyenv which Display the full path to an executable whence List all Python versions that contain the given executable
三、pyenv常用命令
3.1、查看本地版本列表, 其中前面的*号的意思是当前使用的版本
pyenv versions
3.2、查看当前使用的版本的命令
pyenv version
3.3、查看服务器上的版本
pyenv install --list
3.4、安装指定python版本, 安装比较缓慢, 需要编译,所以要提前安装gcc工具等
pyenv install 3.5.0
3.5、卸载已有版本
pyenv uninstall 3.5.0
3.6、在指定的文件夹设定python版本, 比如说在/opt 这个目录下设定, 就只有这个目录是你设置的版本
cd /opt pyenv local 3.5.0 python #发现已经变成了python3.5了
3.7、全局设定python版本, 最好不要全局设定, 因为系统的一些功能需要用到默认的python功能
pyenv global 3.5.0 python #发现是3.5的版本 pyenv global system #恢复成原有系统的版本
四、pyenv-virtualenv: 管理虚拟环境的插件
和pyenv不同, pyenv-virtualenv 是为了解决不同项目所依赖的软件包之间的问题, 假如说你的两个项目都是依赖python3系列, 应用名称分别为A 和 B, 但是A和B的应用需要用到同一个依赖C,但是C的版本有很多,A可能需要C1 , B 可能需要C2 , 那么这时就产生冲突了,安装C1还是C2呢, 虚拟环境就是干这事用的, 对于A和B,每个应用都会复制出来一份python的环境中, A应用环境中你安装你需要的就行了,并不影响B的环境, 因为B也复制了一份python的环境,所以都互相不影响, 皆大欢喜,哈哈。
4.1、安装
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
4.2、添加 pyenv virtualenv-init 到shell
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
4.3、执行当前的shell
exec "$SHELL"
五、创建指定python的版本的虚拟环境
虚拟环境一般都和pyenv配合使用, 假如说你的应用是依赖python3.5.0版本,那么你创建的时候就以3.5.0的python版本来创建了一个隔离环境,当然你也可以用其它版本,创建完成之后,需要激活,激活之后,那么在安装依赖的话,就只对你当前的虚拟环境生效了
5.1、创建虚拟环境
pyenv virtualenv 3.5.0 test
5.2、激活虚拟环境
激活分为两种方式, 一种是自动, 一种是手动,先来看手动的方式, 大家做实验的时候可以都测试测试,推荐为自动
手动激活test虚拟环境, 激活成功后,在提示语后面会多了一个luohua
pyenv activate test
自动激活虚拟环境 在你想要设置激活的目录里,创建一个 .python-version 的文件,文件的内容是你创建虚拟环境的名称,比如说我创建的虚拟环境的名称是 luohua
echo luohua > .python-version
5.3、解除激活环境
pyenv deactivate
六、安装Django,并且用uwsgi部署
本小节不是为了学Django, 而是通过Django框架来熟悉虚拟环境,仅仅只是一个测试
6.1、创建环境依赖文件,如果不是最新版本,可能需要升级
pip freeze > requirements.txt echo Django==2.0 > requirements.txt echo uwsgi >> requirements.txt
6.2、安装依赖
pip install -r requirements.txt
6.3、创建Django项目
django-admin startproject myblog
6.4、uwsgi命令启动httpd服务器
cd myblog uwsgi --http 0.0.0.0:8888 --wsgi-file ./myblog/wsgi.py curl 127.0.0.1:8888
七、本篇总结
pyenv 是为了解决同一个系统上的python多版本问题
pyenv-virtualenv 是为了解决同一个python版本创建多个应用时而产生出来的项目依赖环境