Python虚拟环境 pyvenv virtualenv
什么是Python虚拟环境?
Python虚拟环境可以为项目创建相互独立的开发环境,也就是你可以为每个项目安装各自使用依赖模块。
使用虚拟环境可以很好的解决上面A、B项目遇到的问题:为A、B项目分别创建虚拟环境,然后在各自的虚拟环境中安装不同的tensorflow版本。
使用虚拟环境需要借助virtualenv或pyvenv,它们的使用非常简单。
安装virtualenv、pyvenv
如果你使用Python 2,你可以使用pip安装virtualenv:
$ sudo pip install virtualenv
如果你使用Python 3,它默认安装了pyvenv。
virtualenv和pyvenv的使用方法类似。由于pyvenv是较新的工具,本帖以它为例。
创建一个存放虚拟环境的目录:
$ mkdir python-env
$ cd python-env
创建一个虚拟环境:
$ pyvenv env_A
上面命令在当前目录创建了env_A目录,目录结构:
├── bin
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── easy_install
│ ├── easy_install-3.5
│ ├── pip
│ ├── pip3
│ ├── pip3.5
│ ├── python -> python3.5
│ ├── python3 -> python3.5
│ └── python3.5 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
├── include
├── lib
│ └── python3.5
│ └── site-packages
└── pyvenv.cfg
使用创建的虚拟环境env_A:
$ source env/bin/activate
提示符中包含:
(env_A) $
现在你通过pip安装的包都会安装这个虚拟环境中;导入(import)模块时也只能使用这个虚拟环境中的模块。
如果要退出env_A虚拟环境,执行:
(env_A) $ deactivate
虚拟环境的工作原理
主要就是操作环境变量。
Python在非虚拟环境下的路径:
$ which python
/usr/bin/python
激活虚拟环境再次查看Python路径:
$ source env/bin/activate
(env) $ which python
/Users/snail/python-env/env_A/bin/python
$PATH 环境变量在激活前后不一样了:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate
(env) $ echo $PATH
/Users/snail/python-env/env_A/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin: