使用pip在两个不同位置安装相同包(Python)
因为工作需要,我想在我的电脑上直接安装Python 2.7.8(我的系统是Mac OSX 10.9)。
我现在在Enthought Canopy里运行的是Python 2.7.6,我不想去动里面已经存在的库。
我的问题是,我想用pip来为新安装的Python版本安装一些包,但现在pip是和Enthought Canopy捆绑在一起的,所以它只能在Enthought Canopy的路径下安装包。
我首先尝试了以下命令:
pip install --install-option="--prefix=$PREFIX_PATH/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages" scikit-learn
但是出现了以下错误:
Requirement already satisfied (use --upgrade to upgrade): scikit-learn in ./Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages
然后,我尝试把现有的Enthought文件夹添加到新安装的Python 2.7.8的路径中。我在.bash_profile的最后添加了以下一行:
PYTHONPATH=$PYTHONPATH:Users/***/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
这导致在尝试导入一些包时出现了错误,可能是因为这个原因:无法导入Scikit-Learn
我其实更希望能在一个单独的文件夹里安装一个新的scikit-learn版本。有没有人有好的建议?
1 个回答
你可以使用 virtualenv
来创建一个独立的 Python 环境,这个环境可以和你平常用的 Python 安装分开配置和使用。
首先,创建这个虚拟环境(如果你用的是比较旧的 virtualenv
版本,记得在 virtualenv
后面加上 --no-site-packages
):
$ virtualenv limitedenv
Using base prefix '/usr/local/Cellar/python3/3.3.3/Frameworks/Python.framework/Versions/3.3'
New python executable in limitedenv/bin/python3
Also creating executable in limitedenv/bin/python
Installing setuptools, pip...done.
接下来,进入这个虚拟环境并激活它:
$ cd limitedenv/
$ source bin/activate
(limitedenv)$
然后,像平常一样用 pip 安装你需要的包:
(limitedenv)$ pip install scikit-learn
Downloading/unpacking scikit-learn
Downloading scikit-learn-0.15.0.tar.gz (7.0MB): ...
这样,scikit-learn
就会被安装在 limitedenv
这个环境里,只要你激活了这个环境,使用 python 或 pip 就像是在你自己独立的 Python 安装里一样。
你可以通过输入 deactivate
来退出这个虚拟环境:
(limitedenv)$ deactivate
$
这样,你就可以为不同的项目使用不同版本的 Python,或者为每个项目使用不同版本的库,以及根据项目需求进行不同的配置。virtualenv
是一个非常有用的工具!