pip
,virtualenv
和distribute
的正确方法是什么?在my answer到SO question 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的博文So you want to use Python on the Mac?中提取了这些说明。我喜欢保持一个干净的全局site-packages目录的想法,因此我安装的唯一其他软件包是virtualenvwrapper
和distribute
。 (由于distribute
,我最近将this Python public service announcement添加到了我的工具箱。要安装这两个软件包,我使用了:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
要真正关注that Python public service announcement,在全新的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
在my answer至SO question 4314376的评论中,SO用户Glyph声明:
NO。从来没有
sudo python setup.py install
无论如何。写一个〜/ .pydistutils.cfg,将你的pip安装放到〜/ .local或其他东西。特别是名为ez_setup.py
的文件往往会破坏setuptools和easy_install之类的新版本,这可能会破坏操作系统上的其他内容。
所以Glyph's response让我想到了原来的问题:
pip
,virtualenv
和distribute
的正确方法是什么?答案 0 :(得分:172)
您可以在不将任何内容安装到python本身的情况下执行此操作。
您不需要sudo或任何特权。
您无需编辑任何文件。
将virtualenv安装到引导程序虚拟环境中。使用该虚拟环境创建更多。由于virtualenv随附pip和分发版,因此您可以从一次安装中获得所有内容。
这是bash中的一个例子:
# Select current version of virtualenv:
VERSION=12.0.7
# Name your first "bootstrap" environment:
INITIAL_ENV=bootstrap
# Set to whatever python interpreter you want for your first environment:
PYTHON=$(which python)
URL_BASE=https://pypi.python.org/packages/source/v/virtualenv
# --- Real work starts here ---
curl -O $URL_BASE/virtualenv-$VERSION.tar.gz
tar xzf virtualenv-$VERSION.tar.gz
# Create the first "bootstrap" environment.
$PYTHON virtualenv-$VERSION/virtualenv.py $INITIAL_ENV
# Don't need this anymore.
rm -rf virtualenv-$VERSION
# Install virtualenv into the environment.
$INITIAL_ENV/bin/pip install virtualenv-$VERSION.tar.gz
现在您可以使用“bootstrap”环境创建更多:
# Create a second environment from the first:
$INITIAL_ENV/bin/virtualenv py-env1
# Create more:
$INITIAL_ENV/bin/virtualenv py-env2
坚果!
这假设您没有使用真正旧版本的virtualenv。
旧版本需要标志--no-site-packges
(并且取决于Python的版本,--distribute
)。现在,您可以使用python virtualenv.py path-to-bootstrap
或python3 virtualenv.py path-to-bootstrap
创建自举环境。
答案 1 :(得分:21)
我认为Glyph意味着做这样的事情:
~/.local
(如果该目录尚不存在)。~/.bashrc
中,确保~/.local/bin
已PATH
,且~/.local
已PYTHONPATH
。创建一个包含
的文件~/.pydistutils.cfg
[install]
prefix=~/.local
这是一个标准的ConfigParser格式文件。
Download distribute_setup.py
并运行python distribute_setup.py
(否sudo
)。如果它抱怨不存在的site-packages
目录,请手动创建它:
mkdir -p~ / .local / lib / python2.7 / site-packages /
运行which easy_install
以验证它来自~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
在~/.bashrc
添加
export WORKON_HOME
source ~/.local/bin/virtualenvwrapper.sh
就是这样,根本不使用sudo
,你的Python环境在~/.local
,完全独立于操作系统的Python。免责声明:不确定此方案中兼容性virtualenvwrapper
- 我无法在我的系统上测试它: - )
答案 2 :(得分:16)
如果您按照我在this answer中链接的几个教程中建议的步骤,您就可以了 如果没有Walker和Vinay的答案中有些复杂的“手动”步骤,就可以获得理想的效果。如果您使用的是Ubuntu:
sudo apt-get install python-pip python-dev
通过使用自制软件安装python,在OS X中实现了等效(更多细节here)。
brew install python
安装pip
后,您可以使用它来获取剩余的软件包(您可以在OS X中省略sudo
,因为您正在使用本地python安装。)
sudo pip install virtualenvwrapper
(这些是您需要在全球范围内安装的唯一软件包,我怀疑它会与操作系统中的任何系统级别发生冲突。如果您想要超级安全,可以保留发行版的sudo apt-get install virtualenvwrapper
)
注意:在Ubuntu 14.04中我收到some errors with pip install,因此我使用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
答案 3 :(得分:12)
Python 3.3添加了venv module,Python 3.4添加了ensurepip module。这使得bootstrapping pip变得如此简单:
python -m ensurepip
在虚拟环境中调用venv
之前可能会这样做。
PEP 453中描述了保证点。
答案 4 :(得分:10)
在Ubuntu上:
sudo apt-get install python-virtualenv
包python-pip
是一个依赖项,因此它也将被安装。
答案 5 :(得分:5)
我让这个程序供我们在工作中使用。
cd ~
curl -s https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz | tar xvz
cd pip-1.3.1
python setup.py install --user
cd ~
rm -rf pip-1.3.1
$HOME/.local/bin/pip install --user --upgrade pip distribute virtualenvwrapper
# Might want these three in your .bashrc
export PATH=$PATH:$HOME/.local/bin
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--distribute"
source $HOME/.local/bin/virtualenvwrapper.sh
mkvirtualenv mypy
workon mypy
pip install --upgrade distribute
pip install pudb # Or whatever other nice package you might want.
安全意识的关键点:
答案 6 :(得分:5)
更新: 截至2013年7月,此项目已不再维护。作者建议使用pyenv。 (pyenv没有对virtualenv的内置支持,但是可以很好地使用它。)
Pythonbrew 是python的版本管理器,并且支持virtualenv。
使用venvs安装pythonbrew和python-version之后非常简单:
# Initializes the virtualenv
pythonbrew venv init
# Create a virtual/sandboxed environment
pythonbrew venv create mycoolbundle
# Use it
pythonbrew venv use mycoolbundle
答案 7 :(得分:3)
sudo python setup.py install没有问题,如果你确定它是你想做的。
不同之处在于它将使用操作系统的site-packages目录作为要复制的.py文件的目标。
所以,如果你想让pip可以被广泛访问,那可能就是这样。我不是说别人的方式不好,但这可能是公平的。
答案 8 :(得分:3)
Install ActivePython。它包括pip,virtualenv和Distribute。
答案 9 :(得分:2)
我最近遇到了同样的问题。我越来越偏向于“总是使用virtualenv”思维模式,所以我的问题是用pip安装virtualenv而不安装分发到我的全局或用户site-packages目录。为此,我手动下载了distribute,pip和virtualenv,并为每个运行“python setup.py install --prefix~ / .local / python-private”(临时设置为PYTHONPATH =〜/ .local / python-private)以便安装脚本能够找到分发)。我已将virtualenv脚本移动到我在PATH上的另一个目录并对其进行了编辑,以便可以在sys.path上找到distribute和virtualenv模块。 Tada:我没有在/ usr,/ usr / local或我的用户site-packages目录下安装任何东西,但是我可以在任何地方运行virtualenv,并且在那个virtualenv中我得到了pip。
答案 10 :(得分:2)
答案 11 :(得分:0)
Virtualenv官方网站上有很好的说明。 https://pypi.python.org/pypi/virtualenv
基本上我所做的就是使用pip
安装sudo easy_install pip
,然后使用sudo pip install virtualenv
然后创建一个环境:virtualenv my_env
(将其命名为您想要的),然后我做了:virtualenv --distribute my_env
;在我的virtualenv中安装了distribute
和pip
。
再次按照virtualenv
页面上的说明进行操作。
有点麻烦,来自Ruby; P
答案 12 :(得分:0)
下载virtualenv-1.11.4(您可以在here找到最新内容),解压缩,打开terminal
# 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
。
答案 13 :(得分:0)
好消息是如果你安装了python3.4,已经安装了pyvenv。所以,只是
pyvenv project_dir
source project_dir/bin/activate
python --version
python 3.4.*
现在在这个虚拟环境中,您可以使用pip为该项目安装模块。
保留此虚拟环境,只需
deactivate