管理 Python 环境
利用PyEnv来管理不同的Python版本,virtualenv来创建独立的python运行环境
1 编译 Python
在使用 Bash On Ubuntu On Windows 时,系统最高只支持 Python 3.4.3。所以就到 Python官网 下载最新的 3.6.1 源码。
编译时提示:
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _ssl _tkinter
readline
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
很明显,系统中缺少编译时需要的包。执行下面的命令安装这些缺失的内容:
sudo apt-get update
sudo apt-get install -y libbz2-dev libncurses5-dev libssl-dev libgdbm-dev liblzma-dev libsqlite3-dev tk8.6-dev libreadline6-dev
再次编译就没有提示缺少包了。
注意
- 这里只执行
make
进行编译,不执行make install
安装。- 参考文档中有说需要安装 build-essential 等包,但我没有遇到相关提示。
2 使用 PyEnv 来管理 Python 版本
通过 PyEnv 可以实现在系统中安装多个不同 Python 版本,并根据自己的需要选择要使用的版本。相关说明参考PyEnv 自己的帮助文档 。
使用 PyEnv 还有一个好处:不需要Root权限。这是因为 PyEnv 只是安装在当前用户的目录下。
2.1 安装 PyEnv
下载最新在pyenv版本:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
设置环境变量 PYENV_ROOT
并将 $PYENV_ROOT/bin
加入PATH
:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
将 pyenv init
添加到 shell 中
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
重启 shell
exec $SHELL
2.2 使用 PyEnv 安装 Python 版本
先通过 pyenv versions
查看系统当前有的 Python 版本(及当前生效的版本)。
$ pyenv versions
* system (set by /home/fht/.pyenv/version)
说明 PyEnv 目前只管理了系统本身的版本。
通过 pyenv install -l
查看 PyEnv 可以管理的版本。
通过 pyenv install -k -v 3.6.1
安装 Python 3.6.1 版本。
最后通过 pyenv global 3.6.1
将 3.6.1 版本设置成系统当前版本。
$ pyenv versions
system
* 3.6.1 (set by /home/fht/.pyenv/version)
这样,当我们执行 python
命令时,启动的就是 3.6.1 版本,而不是系统中原先的缺省 2.7.6 版本。
可以通过 pyenv global system
命令,将 python 切换回系统原来的版本。
2.3 删除已安装的Python版本
如:通过执行下面的命令删除刚才安装的 3.6.1 版本:
pyenv uninstall 3.6.1
3 Virtualenv
Virtualenv可以用来创建独立的Python环境,防止不同软件包之间互相影响。这里只提及最简单的用法,更多内容参考:User Guide。
3.1 安装 Virtualenv
执行命令
pip install virtualenv
Note:
PyEnv
自带有pip
和easy_install
命令。
对于 Python 3.5 及其以上在版本,Python 中已经将 Virtualenv 相应功能集成到一个名为
venv
的包中,不再需要单独安装 Virtualenv。
3.2 创建一个测试环境
为了方便后期管理,可以考虑将测试环境和其对应的代码统一存放在一个目录下。
如:先创建一个 runtime
目录。此目录存放某一个(或一些依赖相同Python环境的) Python 工程。
进入 runtime
目录下,执行下面的命令创建一个名为 test
的环境。
virtualenv test
如果是使用 Python 自带的 venv
包,则应该执行如下命令:
python -m venv test
这实际上是创建了一个名为 test
的目录。该目录下有 bin、include、lib等子目录。
test
目录下的东西不需要手工维护。
3.3 使用测试环境
(假定当前在 rumtime 目录)通过下面的命令来让 test 环境生效:
source test/bin/activate
环境生效后,会在提示符前增加当前生效的环境名: (test)
。
这时再执行各种安装、卸载Python包的命令,就只会将影响测试环境。也就是只会在 test
目录下安装、卸载。
执行下面的命令可以让测试环境失效:
deactivate
3.4 删除测试环境
在确保测试环境失效后,直接删除对应的目录就可以了。如
deactivate
rm -r test
参考文档
声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权,转载请注明出处。