python虚拟环境virtualenv的安装与使用

若是咱们要同时开发多个应用程序,每一个应用可能须要各自拥有一套“独立”的Python运行环境,咱们可使用virtualenv解决这个问题,它能够为一个应用建立一套“隔离”的Python运行环境。python

一. 安装virtualenv 

sudo apt-get install python-virtualenv 
or
sudo easy_install virtualenv 

 

二. 建立环境

建立python2环境:git

virtualenv myenv

建立python3环境github

virtualenv -p /usr/bin/python3  myenv3

若是你的虚拟环境安装库的时候出问题,好比python3环境sql

须要安装pip3shell

sudo apt-get install python3-pip

 

建立彻底隔离的Python环境,实质是建立了一个文件夹,咱们的操做都是在这个目录里面进行的。flask

建立的虚拟环境文件夹的位置在家目录下,名为myenvpython2.7

 默认状况下,virtualenv会引用系统python环境中 site-­packages 中的库,并将其复制到虚拟python环境的库中。咱们能够设置 --no-site-packages 参数取消对系统Python库的引用,以此来建立一个彻底纯净的python环境。spa

virtualenv --no-site-packages myenv

 

myenv的lib/目录下,即是咱们建立的python虚拟环境,这个默认的python版本由咱们的系统python环境决定,好比我本机的python环境为python2.7,virtualenv便默认建立python2.7的环境。固然,咱们也能够建立自定义版本的python虚拟环境,这在后文有介绍。  .net

三. 激活虚拟环境

cd ~/myenv/bin && source ./activate

 

咱们能够看到在命令行的前面已经加上了咱们虚拟环境的名字“myenv”,表示当前环境是一个名为myenv的Python虚拟环境。命令行

此时咱们即可以在这个虚拟环境中,进行相关操做了,好比安装第三方库。

咱们用pip安装第三方库shodan,而后在虚拟环境的myenv/lib/python2.7/site-packages目录下,咱们能够找到安装好的库。

四.使用Pyenv管理python版本

1.安装 pyenv

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /etc/profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /etc/profile
echo 'eval "$(pyenv init -)"' >> /etc/profile

安装完成之后,须要从新载入配置文件,或者退出之后从新登陆,以使/etc/profile中的配置生效。

 咱们能够经过下面的命令验证pyenv是否正确安装以及获取pyenv的帮助信息:

1.使用 pyenv

pyenv install
安装一个 Python 版本,到 $PYENV_ROOT/versions 路径下。

pyenv install -v 2.7.3

卸载 

pyenv uninstall 2.7.3

 

安装python时会报错,好比:

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?

 

安装相关依赖便可

apt-get install bzip2-devel bzip2-libs -y
apt-get install sqlite-devel -y
apt-get install openssl openssl-devel openssl-static -y apt-get install readline readline-devel readline-static -y

 

pyenv versions
# 查看当前 pyenv 可检测到的全部版本,处于激活状态的版本前以 * 标示。

$ pyenv versions
system
* 3.5.1 (set by /root/.pyenv/version) 3.5.1/envs/flask_py351 3.5.1/envs/pelican flask_py351 pelican

 

建立新的python环境,位于 ~/.pyenv/versions/

pyenv virtualenv 2.7.1 env271

切换到新的环境:$ pyenv activate env271
退回到系统环境:$ pyenv deactivate
删除新建立的环境:$ rm -rf ~/.pyenv/versions/env271/



 

pyenv rehash
为全部已安装的可执行文件 (如:~/.pyenv/versions/*/bin/*) 建立 shims
每当你增删了 Python 版本或带有可执行文件的包(如 pip)之后,都应该执行该命令

pyenv install 2.7.3
pyenv rehash

 

pyenv global
设置全局的 Python 版本,经过将版本号写入 ~/.pyenv/version 文件的方式。

pyenv global 3.4.0

 

设置面向程序的本地版本,经过将版本号写入当前目录下的 .python-version 文件的方式。

经过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。

pyenv local 2.7.3

 

设置面向 shell 的 Python 版本,经过设置当前 shell 的 PYENV_VERSION 环境变量的方式。
这个版本的优先级比 local 和 global 都要高。--unset 参数能够用于取消当前 shell 设定的版本。

pyenv shell pypy-2.2.1
pyenv shell --unset

 

  

参考:https://my.oschina.net/lionets/blog/267469 

相关文章
相关标签/搜索