我试着使用了pyenv、virtualenv和virtualenvwrapper的故事
我之前一直使用pyenv来处理Python环境,但因为经常听到,所以尝试使用virtualenv。
同时,我还安装了virtualenvwrapper。
预先环境
大概就是这样的
$ pyenv versions
system
* 3.5.2 (set by /Users/hikaru/.pyenv/version)
安装
在Python 3.5.2环境下进行安装。
$ pyenv version
3.5.2 (set by /Users/hikaru/.pyenv/version)
$ pip install virtualenv virtualenvwrapper
安装
将以下内容写入.bashrc文件中
export WORKON_HOME=$HOME/.virtualenvs
source $PYENV_ROOT/versions/3.5.2/bin/virtualenvwrapper.sh
执行以下命令。
$ mkdir ~/.virtualenvs
$ source ~/.bashrc
我差点沉迷于source virtualenvwrapper.sh的路径。
还有一个文件叫做$HOME/.pyenv/shims/virtualenvwrapper.sh,但是它和上面提到的不同。
而且,当我source它时终端会退出。
移动
建立环境
$ mkvirtualenv django
Using base prefix '/Users/hikaru/.pyenv/versions/3.5.2'
New python executable in /Users/hikaru/.virtualenvs/django/bin/python3.5
Also creating executable in /Users/hikaru/.virtualenvs/django/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/get_env_details
(django) $ pip list -l --format=columns
Package Version
---------- -------
appdirs 1.4.3
packaging 16.8
pip 9.0.1
pyparsing 2.2.0
setuptools 35.0.2
six 1.10.0
wheel 0.29.0
就是这样,我创建了一个名为 Django 的环境。
安装的包也只包括了最基本必需的部分。
离开环境
(django)$ deactivate
$
使用workon命令可以显示环境列表,并选择一个环境,然后进入每个环境。
$ workon
django
$ workon django
(django) $
环境清除
$ rmvirtualenv django
Removing django...
$
用Python设置环境
在Python3.5.2环境下执行mkvirtualenv命令会创建一个Python3.5.2的虚拟环境,但也可以明确选择使用其他版本的Python。
$ mkvirtualenv --python=/usr/bin/python2.7 django
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /Users/hikaru/.virtualenvs/django/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/get_env_details
(django) $ python --version
Python 2.7.10
(django) $
Python 2.7.10运行正常。
总结
如果不需要根据Python版本管理软件包,则似乎不需要使用virtualenv。
然而,如果存在相互产生负面影响的软件包,或者需要进行精确的版本指定,则最好使用virtualenv来切换环境。