标准python distutils provides a '--user' option,它允许我以受限用户身份安装软件包,如下所示:
python setup.py install --user
easy_install 和 pip 是否相同?
答案 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
是否更适合您尝试完成的任何事情而不是用户站点目录。 pip
和virtualenv
非常合作,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都将安装到同一个文件夹