doina

一个小菜鸟运维工程师.

python多版本及虚拟环境管理

使用pyenv管理不同的python版本

系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性;
系统自带的 Python 是 2.x,自己需要 Python 3.x;

此时需要在系统中安装多个 Python,但又不能影响系统自带的 Python,即需要实现 Python 的多版本共存。pyenv 就是这样一个 Python 版本管理器。

安装 pyenv

在终端执行如下命令以安装 pyenv 及其插件:

$ git clone https://github.com/yyuu/pyenv.git  ~/.pyenv

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

$ source ~/.bash_profile
$ pyenv --help
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   commands    List all available pyenv commands
   exec        Run an executable with the selected Python version
   global      Set or show the global Python version
   help        Display help for a command
   hooks       List hook scripts for a given pyenv command
   init        Configure the shell environment for pyenv
   install     Install a Python version using python-build
   local       Set or show the local application-specific Python version
   ...

pyenv使用

查看pyenv支持的版本

$ pyenv install --list

安装指定版本

$ pyenv install -v 2.7.13
$ pyenv install -v 3.6.3

查看已安装的python版本

$ pyenv versions
* system (set by /root/.pyenv/version)
  2.7.13
  3.6.3

切换python版本,带*号的为当前版本. 使用pyenv切换python版本后,与版本相关的依赖一会一同切换,所以不用担心依赖的问题.

#将所有用户的Python版本切换为特定版本号
$ pyenv global 3.6.3

#将当前Shell会话的Python版本切换为特定版本
$ pyenv shell 3.6.3

#将当前文件夹及子文件夹的Python版本切换为特定版本
$ pyenv local 3.6.3

$ pyenv versions
  system
  2.7.13
* 3.6.3 (set by /root/.pyenv/version)

$ python
Python 3.6.3 (default, Nov 17 2019, 17:09:54) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.

删除python版本

$ pyenv uninstall 2.7.13
pyenv: remove /root/.pyenv/versions/2.7.13? y

使用virtualenv来管理不同项目环境

安装virtualenv

$ git clone https://github.com/yyuu/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

$ pyenv help virtualenv
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name>
       pyenv virtualenv --version
       pyenv virtualenv --help

  -f/--force       Install even if the version appears to be installed already

pyenv-virtualenv使用

新建两个工作环境

$ pyenv virtualenv 3.6.3 first_project 
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.6.3/envs/first_project/lib/python3.6/site-packages
Requirement already satisfied: pip in /root/.pyenv/versions/3.6.3/envs/first_project/lib/python3.6/site-packages

$ pyenv virtualenv 3.6.3 second_project
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.6.3/envs/second_project/lib/python3.6/site-packages
Requirement already satisfied: pip in /root/.pyenv/versions/3.6.3/envs/second_project/lib/python3.6/site-packages

查看已有的工作环境

$ pyenv virtualenvs
3.6.3/envs/first_project (created from /root/.pyenv/versions/3.6.3)
3.6.3/envs/second_project (created from /root/.pyenv/versions/3.6.3)
first_project (created from /root/.pyenv/versions/3.6.3)
second_project (created from /root/.pyenv/versions/3.6.3)

切换工作环境
– activate: 进入工作环境
– deactivate: 退出工作环境

$ pyenv activate first_project 
(first_project) $ pip install flask==1.0
(first_project) $ pyenv deactivate 

$ pyenv activate second_project 
(second_project) $ pip install flask==1.1
(second_project) $ pyenv deactivate 

删除虚拟环境

$ pyenv virtualenv-delete first_project 
pyenv-virtualenv: remove /root/.pyenv/versions/3.6.3/envs/first_project? y

$ pyenv virtualenvs
3.6.3/envs/second_project (created from /root/.pyenv/versions/3.6.3)
second_project (created from /root/.pyenv/versions/3.6.3)
点赞

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据