我试着使用了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来切换环境。

广告
将在 10 秒后关闭
bannerAds