python 多版本管理工具

python多版本问题一直是比较头疼的事, 现在主流的版本分为 2系列和3系列, 其中3系列又分为很多版本, 如果用一些特定的功能时就可能面临着python版本的选择了, 那我们怎么办呢? 可以用python的多版本管理工具,请继续往下看

一、本篇目标

安装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版本创建多个应用时而产生出来的项目依赖环境


上一篇:没有了

下一篇:没有了

相关推荐

  • python 多版本管理工具

    python多版本问题一直是比较头疼的事, 现在主流的版本分为 2系列和3系列, 其中3系列又分为很多版本, 如果用一些特定的功能时就可能面临着python版本...

    Border circle luohua 2020-07-19 14:45:56 0 0 11

发表评论