[英]easy_install or pip as a limited user?
标准的python distutils提供了一个'--user'选项 ,允许我以有限的用户身份安装包,如下所示:
python setup.py install --user
是否有easy_install和pip的等价物?
有关pip
,请参阅用户安装以获取详细信息,但基本上,这正是您所期望的:
pip install --user Foo
这对easy_install
有点棘手。 正如Ned Deily指出的那样,如果你可以依赖distribute
而不是setuptools
,以及0.6.11或更高版本,你可以使用--user
和pip
。 但是,如果您需要使用setuptools
或较旧的distribute
...请参阅自定义安装位置以获取详细信息(并注意它解释了如何创建和设置用户站点包,而不仅仅是如何在那里安装,因为它需要能够工作使用Python 2.5及更早版本,默认情况下不执行此操作)。 但我们希望,你只使用easy_install
为未包装的少数pip
-able,所以这不是什么大不了的事。
但是,至少值得考虑virtualenv
是否比用户站点目录更适合您要完成的任何事情。 正如文档所解释的那样, pip
和virtualenv
很好地协同工作。
来自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。
问题是pip和easy_install (由python setup.py调用)以不同的方式解释--user
参数。
pip install --user PackageName
将pip 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.