Linux
虚拟环境的使用
和其他大多数现代编程语言一样,Python对包和模块的下载、存储以及管理有其自己的一套方法。Python的包一般存在几个地方,使用
sys.path
可以查看python包和模块的存放路径
。
import sys
print(sys.path)
Copy
输出结果:
['',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages'
]
Copy
这里列出了python里查找包或者模块时的所有可用路径,其中
''
表示的是当前项目的目录,一般情况下,我们需要关注的是使用
pip install
指令下载的第三方资源包。这个第三方资源包被存放在了
'/usr/local/lib/python3.6/dist-packages'
目录下,这里就带来了一个问题,当我们同时开发多个工程时,不同的工程会将第三方的包存放在相同的路径下。这就意味着,如果有两个工程依赖同一个包,但是所需要的版本却不一样,比如工程A依赖v1.0.0,而工程B依赖v2.0.0。由于Python无法根据版本来区分包的安装路径,所以这里就会发生版本冲突。
安装virtualenv
virtualenv 是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
pip install virtualenv
Copy
安装完成以后,可以使用命令快速的创建、激活虚拟环境。
cd my_project # 进入到工程的工作目录
virtualenv .test # 创建虚拟环境,并命名为test.此时会在my_project下多出一个test的文件夹
virtualenv -p /usr/bin/python3 .venv : 指定Python环境创建虚拟环境
source .test/bin/activate # 激活虚拟环境。此时,如果使用pip install安装的插件,都会被安装到当前虚拟环境
pip install flask # 测试安装flask. flask会被安装到当前虚拟环境,而不是全局环境
deactive : 退出虚拟环境
Copy
安装virtualenvwrapper
安装virtualenv以后,已经可以创建和激活虚拟环境了,但是使用起来却不是那么的方便。我们可以在安装一个virtualenvwrapper工具,它可以更加方便的帮我们管理虚拟环境。
pip install virtualenvwrapper
Copy
安装完成以后,在~/.bashrc文件下添加以下内容:
export WORKON_HOME=~/.envs
source /usr/local/bin/virtualenvwrapper.sh
Copy
保存以后,再执行以下指令:
source ~/.bashrc
Copy
下面我们就可以很方便的管理虚拟环境了。
mkvirtualenv test # 创建并切换到test虚拟环境
deactivate # 离开test虚拟环境
rmvirtualenv test # 删除test虚拟环境
workon demo # 切换到demo虚拟环境
Copy
注意:若是pip3安装的virtualenv且pip3的软链接指向新安装的python3.7
1.在/usr/bin下面创建virtualenv的软连接
ln -s /usr/local/src/python37/bin/virtualenv virtualenv
2.在~/.bashrc中添加即可
export WORKON_HOME=~/.envs
source /usr/local/src/python37/bin/virtualenvwrapper.sh
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
(虚拟环境默认创建在~/.envs的文件夹中)