短的问题

安装pip、virtualenv和分发的正确方法是什么?

背景

在我对SO问题4314376的回答中,我建议使用ez_setup,这样你就可以像下面这样安装pip和virtualenv:

curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv

我最初从Jesse Noller的博客文章中提取了这些说明所以你想在Mac上使用Python ?我喜欢保持一个干净的全局site-packages目录的想法,所以我在那里安装的其他包只有virtualenvwrapper和distribute。(因为这个Python公共服务公告,我最近把分发添加到我的工具箱中。为了安装这两个包,我使用了:

sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

不再有setuptools和easy_install

为了真正遵循Python公共服务声明,在新的Python安装上,我将执行以下操作:

curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper

字形的责备

在我对SO问题4314376的回答的评论中,SO用户Glyph表示:

不。永远不要使用sudo python setup.py安装任何东西。编写~/.pydistutils.cfg文件,将pip安装放在~/目录下。本地的或者其他的。特别是名为ez_setup.py的文件往往会占用setuptools和easy_install等新版本的东西,这可能会破坏操作系统上的其他东西。

回到那个简短的问题

所以,Glyph的回答让我想到了我最初的问题:

安装pip、virtualenv和分发的正确方法是什么?


当前回答

下面是一种安装virtualenvwrapper的好方法。

下载virtualenv-1.11.4(你可以在这里找到最新版本),解压,打开终端

# Create a bootstrapenv and activate it:
$ cd ~
$ python <path to unzipped folder>/virtualenv.py bootstrapenv
$ source bootstrapenv/bin/activate

# Install virtualenvwrapper:
$ pip install virtualenvwrapper
$ mkdir -p ~/bootstrapenv/Envs

# append it to file `.bashrc`
$ vi ~/.bashrc
  source ~/bootstrapenv/bin/activate
  export WORKON_HOME=~/bootstrapenv/Envs
  source ~/bootstrapenv/bin/virtualenvwrapper.sh

# run it now.
$ source ~/.bashrc

就是这样,现在你可以使用mkvirtualenv env1, lsvirtualenv ..等

注意:可以在“下载”文件夹中删除virtualenv-1.11.4和virtualenv-1.11.4.zip。

其他回答

如果你遵循我在这个答案中链接的几个教程中建议的步骤,你就会 就能得到想要的效果,而不需要沃克和维奈回答中有些复杂的“手动”步骤。如果你用的是Ubuntu:

sudo apt-get install python-pip python-dev

在OS X中,通过使用自制程序安装python可以实现相同的功能(更多细节请点击此处)。

brew install python

安装pip后,您可以使用它来获取剩余的包(在OS X中可以省略sudo,因为您正在使用本地python安装)。

sudo pip install virtualenvwrapper

(这些是你唯一需要在全球安装的包,我怀疑它会与任何系统级的操作系统发生冲突。如果你想要超级安全,你可以保留发行版的版本

注意:在Ubuntu 14.04中,我在pip安装时收到了一些错误,所以我使用pip3 install virtualenv virtualenvwrapper并将VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3添加到我的.bashrc/。zshrc中。

然后追加到.bashrc文件

export WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh

来源

. ~/.bashrc

基本上就是这样。现在唯一需要决定的是是否要创建一个virtualenv来包含系统级包

mkvirtualenv --system-site-packages foo

现有的系统包不需要重新安装,它们被符号链接到系统解释器的版本。注意:你仍然可以在没有sudo的情况下安装新的包和升级现有的系统包-我测试了它,它可以在没有任何系统解释器中断的情况下工作。

kermit@hocus-pocus:~$ sudo apt-get install python-pandas
kermit@hocus-pocus:~$ mkvirtualenv --system-site-packages s
(s)kermit@hocus-pocus:~$ pip install --upgrade pandas
(s)kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.10.1
(s)kermit@hocus-pocus:~$ deactivate
kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.8.0

如果你想要一个完全分离的环境,另一种选择是

mkvirtualenv --no-site-packages bar

或者假设这是默认选项,简单地

mkvirtualenv bar

结果是,您有了一个新的virtualenv,在那里您可以自由而缓慢地安装您最喜欢的软件包

pip install flask

在Ubuntu上:

Sudo apt-get install python-virtualenv

python-pip包是一个依赖项,因此也将安装它。

下面是一种安装virtualenvwrapper的好方法。

下载virtualenv-1.11.4(你可以在这里找到最新版本),解压,打开终端

# Create a bootstrapenv and activate it:
$ cd ~
$ python <path to unzipped folder>/virtualenv.py bootstrapenv
$ source bootstrapenv/bin/activate

# Install virtualenvwrapper:
$ pip install virtualenvwrapper
$ mkdir -p ~/bootstrapenv/Envs

# append it to file `.bashrc`
$ vi ~/.bashrc
  source ~/bootstrapenv/bin/activate
  export WORKON_HOME=~/bootstrapenv/Envs
  source ~/bootstrapenv/bin/virtualenvwrapper.sh

# run it now.
$ source ~/.bashrc

就是这样,现在你可以使用mkvirtualenv env1, lsvirtualenv ..等

注意:可以在“下载”文件夹中删除virtualenv-1.11.4和virtualenv-1.11.4.zip。

好消息是,如果您已经安装了python3.4,那么pyvenv已经安装了。所以,就

pyvenv project_dir
source project_dir/bin/activate
python --version   
python 3.4.*

现在,在这个虚拟环境中,您可以使用pip为这个项目安装模块。

离开这个虚拟的环境

deactivate

更新:截至2013年7月,该项目不再维护。作者建议使用pyenv。(pyenv没有内置对virtualenv的支持,但使用起来很不错。)

Pythonbrew是python的版本管理器,并支持virtualenv。

在安装pythonbrew和使用venvs的python版本之后,真的很容易:

# Initializes the virtualenv 
pythonbrew venv init

# Create a virtual/sandboxed environment 
pythonbrew venv create mycoolbundle  

# Use it 
pythonbrew venv use mycoolbundle