配置环境:
在工作开发中,一直使用 virtualenv 来管理python的包环境。很好的解决了不同项目使用不同python包的需求。对于多python版本的问题如何解决一直无解,虽然可以安装多个
版本的python,靠绝对路径或靠创建虚拟环境的时候指定python(virtualenv -p)版本来解决,但总感觉不是那么的优雅。同事推荐了 pyenv ,一直没用过,特从网上找了些资料试着配置了下,记录如下。
pyenv 是针对 python 版本的管理,通过修改环境变量的方式实现;
virtualenv 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚拟环境,通过切换目录来实现不同包环境间的切换。
pyenv 的美好之处在于,它并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。
brew update
brew install pyenv
pyenv 提供了自动安装的工具,执行命令安装即可:
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
需保证系统有 git ,否则需要新安装git工具。
将 pyenv 检出到你想安装的目录。建议路径为:$HOME/.pyenv
$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv
添加环境变量。PYENV_ROOT 指向 pyenv 检出的根目录,并向 $PATH 添加 $PYENV_ROOT/bin 以提供访问 pyenv 这条命令的路径
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PYENV_VIRTUALENV_DISABLE_PROMPT=1' >> ~/.bash_profile
这里的 shell 配置文件(~/.bash_profile)依不同 Linux 而需作修改——Zsh:~/.zshrc;Ubuntu:~/.bashrc
向 shell 添加 pyenv init 以启用 shims 和命令补完功能
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
配置文件的位置同上一条一样需要修改
重启 shell(因为修改了 $PATH)
$ exec $SHELL
shell > local > global
使用自动安装pyenv 后,它会自动安装部分插件,通过pyenv-virtualenv 插件可以很好的和 virtualenv 结合:
[root@linux3311 ~]# cd .pyenv/plugins/
[root@linux3311 plugins]# ll
insgesamt 24
drwxr-xr-x. 4 root root 4096 19. Jun 05:17 pyenv-doctor
drwxr-xr-x. 5 root root 4096 19. Jun 05:18 pyenv-installer
drwxr-xr-x. 4 root root 4096 19. Jun 05:18 pyenv-update
drwxr-xr-x. 7 root root 4096 19. Jun 05:18 pyenv-virtualenv
drwxr-xr-x. 4 root root 4096 19. Jun 05:18 pyenv-which-ext
drwxr-xr-x. 5 root root 4096 19. Jun 05:17 python-build
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
使用pyenv 来管理python,使用 pyenv-virtualenv 插件来管理多版本 python包。
此时,还需注意,当我们将项目运行的 env 环境部署到生产环境时,由于我们的python 包是依赖python 的,需要注意生产环境的python版本问题。
使用virtualenv来部署django应用,大大缩减了我们搭建环境的时间。初次使用,以为创建好的env可以直接复制使用。实际使用时,确遇到了各种问题。
env在不同环境下使用,还是需要简单修改配置的。今天测试了下,必须确保如下几点,才可使用:
确保env 的存放路径和 activate 中 VIRTUAL_ENV 路径一致。
确保python 的版本及安装路径一致。因为,env环境 lib 中的python 库是指向实际python库的链接,并非真正的库文件。
原文链接:https://segmentfault.com/a/1190000005859547, http://pylixm.cc/posts/2016-01-18-Virtualenv-user.html
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/30