使用pip在两个不同位置安装相同包(Python)

0 投票
1 回答
579 浏览
提问于 2025-04-18 13:54

因为工作需要,我想在我的电脑上直接安装Python 2.7.8(我的系统是Mac OSX 10.9)。

我现在在Enthought Canopy里运行的是Python 2.7.6,我不想去动里面已经存在的库。

我的问题是,我想用pip来为新安装的Python版本安装一些包,但现在pip是和Enthought Canopy捆绑在一起的,所以它只能在Enthought Canopy的路径下安装包。

  1. 我首先尝试了以下命令:

    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
  1. 然后,我尝试把现有的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 个回答

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 是一个非常有用的工具!

撰写回答