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


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

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

$ pip install --allow-external dirspec MyPackage

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

$ pip install --allow-external dirspec TheirPackage

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


7601
2018-04-11 13:37


起源



答案:


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


5
2018-04-14 23:32





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

可能有另一种解决方案:要么依赖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...

6
2018-04-14 23:28



--allow-external不是安全解决方案 - pip 仍将使用从pypi安全获取的外部下载校验和检查。另一方面,如果OP要求 - 允许 - 未经验证的解决方法,那么它确实会出现安全问题。看到这个问题: stackoverflow.com/q/21021326/42610 - liori


答案:


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


5
2018-04-14 23:32





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

可能有另一种解决方案:要么依赖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...

6
2018-04-14 23:28



--allow-external不是安全解决方案 - pip 仍将使用从pypi安全获取的外部下载校验和检查。另一方面,如果OP要求 - 允许 - 未经验证的解决方法,那么它确实会出现安全问题。看到这个问题: stackoverflow.com/q/21021326/42610 - liori