easy_install或pip作为受限用户?

时间:2013-04-09 21:22:55

标签: python pip easy-install

标准python distutils provides a '--user' option,它允许我以受限用户身份安装软件包,如下所示:

python setup.py install --user

easy_install pip 是否相同?

3 个答案:

答案 0 :(得分:7)

对于pip,请参阅User Installs了解详细信息,但基本上,这正是您所期望的:

pip install --user Foo

easy_install来说有点棘手。正如Ned Deily指出的那样,如果您可以依赖distribute而不是setuptools和0.6.11或更高版本,则可以使用与--user相同的pip。但是,如果您需要使用setuptools或更早的distribute ...请参阅Custom Installation Locations了解详细信息(并注意它解释了如何创建和设置用户站点包,而不仅仅是如何安装在那里,因为它需要能够使用Python 2.5及更早版本,默认情况下不会这样做)。但是,希望您只使用easy_install来处理非pip能力的少数软件包,因此这不是什么大问题。

然而,至少值得考虑virtualenv是否更适合您尝试完成的任何事情而不是用户站点目录。 pipvirtualenv非常合作,the docs解释。

答案 1 :(得分:0)

来自easy_install文档

http://peak.telecommunity.com/DevCenter/EasyInstall#downloading-and-installing-a-package

  

- install-dir = DIR,-d DIR设置安装目录。您可以确保此目录在运行时位于sys.path上,以及   使用pkg_resources.require()来启用已安装的软件包   你需要。

     

(0.4a2中的新增内容)如果未在命令中直接指定此选项   在distutils配置文件中,distutils默认   使用安装位置。通常,这将是   site-packages目录,但是如果您正在使用distutils配置   文件,设置前缀或install_lib之类的东西,然后是那些设置   计算默认安装时会考虑这些因素   目录,与--prefix选项一样。

     

- prefix = DIR(0.6a10中的新增内容)使用指定的目录作为计算默认安装和脚本目录的基础。在Windows上,   生成的默认目录将是前缀\ Lib \ site-packages   和前缀\ Scripts,而在其他平台上,默认值为   prefix / lib / python2.X / site-packages(使用适当的版本   代替库)和脚本的前缀/ bin。

     

请注意, - prefix选项仅设置默认安装和   脚本目录,并不会覆盖命令中设置的目录   行或配置文件。

您也可以使用〜/ .pydistutils.cfg文件指定它们

http://peak.telecommunity.com/DevCenter/EasyInstall#mac-os-x-user-installation

在安装EasyInstall / setuptools之前,只需创建一个包含以下内容的〜/ .pydistutils.cfg文件(或将其添加到现有内容):

  

[install] install_lib =   〜/ Library / Python / $ py_version_short / site-packages install_scripts =   〜/ bin这将告诉distutils和EasyInstall始终安装   您的个人site-packages目录中的软件包和脚本   〜/ bin中。 (注意:不要用实际的Python替换$ py_version_short   配置文件中的版本! distutils将替代   在运行时正确的值,以便上面的配置文件应该   无论你使用什么Python版本,现在或在   未来。)

     

完成此操作后,您可以按照正常安装进行操作   说明和使用easy_install没有任何其他特殊选项或   步骤。

     

(注意,〜/ bin不在默认路径中,所以你可能有   按其完整位置引用脚本。您可能想要修改   你的shell启动脚本(可能是.bashrc或.profile)或你的   〜/ .MacOSX / environment.plist在PATH中包含〜/ bin。

答案 2 :(得分:0)

我需要对我的docker做同样的事情并部署到AWS Elastic Beanstalk。

问题是 pip easy_install (由python setup.py调用)以不同的方式解释--user参数。

  • pip install --user PackageName会将PackageName安装到$PYTHONUSERBASE环境变量。
  • python setup.py develop --user将忽略$PYTHONUSERBASE变量并始终安装到~/.local/lib/python<python version>/site-packages文件夹

我找到这两个文件夹的唯一方法是同时删除~/.local/lib/python<python version>/site-packages并链接到$PYTHONUSERBASE

PS:小心下面,你可能需要重新安装所有本地python依赖项。我建议仅在docker或任何其他虚拟环境中使用它

# !!! Be sure you have configured $PYTHONUSERBASE environment variable
rm -r ~/.local/lib/python2.7/site-packages
ln -s $PYTHONUSERBASE/lib/python2.7/site-packages ~/.local/lib/python2.7/site-packages

现在pip和python setup.py devel --user都将安装到同一个文件夹