pip:要避免的任何解决方法--allow-external?

min*_*hee 11 python pip setuptools pypi

pip除非用户明确提供--allow-external选项(相关答案),否则最新版本的安装程序尚未安装不将其包文件上载到PyPI的软件包.

我想分发依赖于像dirspec这样的库的我的包.目前我必须通过以下命令告诉用户我的软件包安装我的软件包:

$ pip install --allow-external dirspec MyPackage
Run Code Online (Sandbox Code Playgroud)

在图书馆包装方面,它变得更加成问题.如果我的包是一个库,我还必须告诉作者依赖我的包来告诉用户通过以下命令安装他们的包:

$ pip install --allow-external dirspec TheirPackage
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方法可以避免这种情况?

Jan*_*sky 6

您要求安全功能的解决方法.在我不知情的情况下从外部站点安装可能被视为有害.

可能有替代解决方案:要么依赖pip抱怨所需的包在没有该开关的情况下无法访问,要么尝试从安装代码中提供这样的指令.但是,第二种方法会失败,如果你真的声明对这种包的依赖,因为pip会先尝试安装外部的,因此不会让你的setup.py有机会说什么.你必须让你的包独立于它,并从setup.py打印出从外部站点安装一些包的说明.这听起来更复杂.

我认为,这种情况(取决于外部包)将足够流行,pip将注意提供足够的指导性提示如何解决这种依赖.

编辑:使用当前版本的pip(1.5.4)测试安装显示,有这样的提示建议使用开关 - 使用外部打印.

$ pip install gitlle
Downloading/unpacking gittle
.....
Downloading/unpacking mimer (from gittle)
  Could not find any downloads that satisfy the requirement mimer (from gittle)
  Some externally hosted files were ignored (use --allow-external mimer to allow).
Cleaning up...
Run Code Online (Sandbox Code Playgroud)


Sea*_*rry 5

正确的做法是在tarball或包含项目和你的项目的大型tarball中包含需求.然后pip将很乐意从本地文件安装.