标准的 python distutils 提供了一个 '--user' 选项,它允许我以受限用户的身份安装一个包,如下所示:
python setup.py install --user
是否有easy_install和pip的等价物?
标准的 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
,所以这没什么大不了的。
但是,至少值得考虑是否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 上,生成的默认目录将是 prefix\Lib\site-packages 和 prefix\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 始终将软件包安装在您的个人站点软件包目录中,并将脚本安装到 ~/bin。(注意:不要在配置文件中将 $py_version_short 替换为实际的 Python 版本!distutils 将在运行时替换正确的值,因此无论您现在或将来使用什么 Python 版本,上述配置文件都应该正常工作.)
完成此操作后,您可以按照正常安装说明使用 easy_install,无需任何其他特殊选项或步骤。
(但是请注意,~/bin 不在默认 PATH 中,因此您可能必须通过脚本的完整位置来引用脚本。您可能需要修改 shell 启动脚本(可能是 .bashrc 或 .profile)或您的 ~/ .MacOSX/environment.plist 将 ~/bin 包含在您的 PATH 中。
我需要对我的 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 都将安装到同一个文件夹