7

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

python setup.py install --user

是否有easy_installpip的等价物?

4

3 回答 3

7

对于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可以很好地协同工作。

于 2013-04-09T21:29:34.573 回答
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 配置文件,设置诸如 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 中。

于 2013-04-09T22:25:14.343 回答
0

我需要对我的 docker 执行相同的操作并部署到 AWS Elastic Beanstalk。

问题是pipeasy_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 都将安装到同一个文件夹

于 2017-01-31T17:50:50.897 回答