Python虚拟环境virtualenv的安装和使用

作者: xusx 分类: Python 发布时间: 2019-11-10 20:15

需求:

1、现在我们已经安装了多个python版本,但是这还不够, 某些有洁癖的程序员是一定要系统环境足够干净的,这时候我们可以使用virtualenv来创建虚拟python环境。

2、pyenv用于不同python版本之间的切换,还有一种场景就是在确定了python版本之后,需要第三方包不同版本之间的切换,比如不同版本的django版本之间的版本切换,又比如应用A需要jinja 2.7,而应用B需要jinja 2.6,于是就有了virutalenv。

解决方案:虚拟环境

虚拟环境其实就是对真实pyhton环境的复制,这样我们在复制的python环境中安装包就不会影响到真实的python环境。通过建立多个虚拟环境,在不同的虚拟环境中开发项目就实现了项目之间的隔离。

virtualenv本是一个独立的工具,官网在这里:https://pypi.python.org/pypi/virtualenv

幸运的是,如果你是安装我们前面的方式安装pyenv的,那它已经帮我们以plugin的形式安装好了virtualenv,我们只要使用就好了。pyenv 解决的是同一个系统中不同版本的 python 并存的问题,而 pyenv-virtualenv 解决的是不同项目所依赖的软件包之间可能产生冲突的问题。

请参考:

1、MacOSX问题:ImportError: No module named ‘_scproxy’

2、Mac下使用pyenv安装、管理多个Python版本

否则,请先安装virtualenv:

~ pip install virtualenv
# 使用说明请见:
# https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480 # 或 https://www.jianshu.com/p/a8129d12dbc7
# 在本文,我们假定环境为已安装pyenv。

首假定我们创建一个3.7.3的虚拟环境:

~ pyenv virtualenv 3.7.3 env373
Looking in links: /var/folders/g5/y2s0vp1506g5ybtgk5wz8l4r0000gn/T/tmpm9nyjb79
Requirement already satisfied: setuptools in /Users/xxx/.pyenv/versions/3.7.3/envs/env373/lib/python3.7/site-packages (40.8.0)
Requirement already satisfied: pip in /Users/xxx/.pyenv/versions/3.7.3/envs/env373/lib/python3.7/site-packages (19.0.3)

~ ls -al /Users/xxxx/.pyenv/versions
total 0
drwxr-xr-x 5 xxx staff 160 11 10 17:31 .
drwxr-xr-x 6 xxx staff 192 11 10 17:31 ..
drwxr-xr-x 6 xxx staff 192 11 10 15:30 2.7.16
drwxr-xr-x 7 xxx staff 224 11 10 17:31 3.7.3
lrwxr-xr-x 1 xxx staff 43 11 10 17:31 env373 -> /Users/xxx/.pyenv/versions/3.7.3/envs/env373

~ pyenv versions
*system (set by /Users/xxx/.pyenv/version)
2.7.16
3.7.3
3.7.3/envs/env373
env373

说明:

1、如果你是通过Cakebrew安装的pyenv,请也安装上pyenv-virtualenv。

2、命令中的“3.7.3”必须是一个安装前面步骤已经安装好的Python版本, 否则会出错。

3、~/.pyenv/versions/env373是个软链接(符号链接)

手动切换到新的虚拟环境的命令为:

~ pyenv activate env373
~ pyenv version #显示当前目录下采用的 python 版本

手动退出虚拟环境切换回系统环境的命令为:

~ pyenv deactivate

pyenv-virtualenv 支持自动激活和退出虚拟环境。首先确保在 shell 配置文件中添加了:

~ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
~ exec $SHELL

接着在需要使用虚拟环境的目录(通常是项目目录)中:建立一个.python-version的文本文件,将虚拟环境名称(如env373)写在里面即可。之后每次进/出该目录时,虚拟环境都将自动激活/退出。

删除虚拟环境:

rm -rf ~/.pyenv/versions/env373/

官方文档:https://github.com/pyenv/pyenv-virtualenv/blob/master/README.md

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注