繁体   English   中英

easy_install或pip作为受限用户?

[英]easy_install or pip as a limited user?

标准的python distutils提供了一个'--user'选项 ,允许我以有限的用户身份安装包,如下所示:

python setup.py install --user

是否有easy_installpip的等价物?

有关pip ,请参阅用户安装以获取详细信息,但基本上,这正是您所期望的:

pip install --user Foo

这对easy_install有点棘手。 正如Ned Deily指出的那样,如果你可以依赖distribute而不是setuptools ,以及0.6.11或更高版本,你可以使用--userpip 但是,如果您需要使用setuptools或较旧的distribute ...请参阅自定义安装位置以获取详细信息(并注意它解释了如何创建和设置用户站点包,而不仅仅是如何在那里安装,因为它需要能够工作使用Python 2.5及更早版本,默认情况下不执行此操作)。 但我们希望,你只使用easy_install为未包装的少数pip -able,所以这不是什么大不了的事。

但是,至少值得考虑virtualenv是否比用户站点目录更适合您要完成的任何事情。 正如文档所解释的那样 pipvirtualenv很好地协同工作。

来自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配置文件,设置诸如prefix或install_lib之类的东西,那么在计算默认安装目录时会考虑这些设置,就像--prefix选项一样。

--prefix = DIR(0.6a10中的新增内容)使用指定的目录作为计算默认安装和脚本目录的基础。 在Windows上,生成的默认目录将是前缀\\ Lib \\ site-packages和前缀\\ Scripts,而在其他平台上,默认目录将是前缀/ 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。 (注意:不要将$ py_version_short替换为配置文件中的实际Python版本!distutils将在运行时替换正确的值,以便上述配置文件无论您现在还是将来使用的Python版本都能正常工作。)

完成此操作后,您可以按照正常的安装说明操作,并使用easy_install,而无需任何其他特殊选项或步骤。

(但请注意,〜/ bin不在默认路径中,因此您可能必须按其完整位置引用脚本。您可能需要修改shell启动脚本(可能是.bashrc或.profile)或者〜/ .MacOSX / environment.plist在您的PATH中包含〜/ bin。

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

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

  • pip install --user PackageNamepip install --user 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都将安装到同一个文件夹中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM