python - pip:有什么解决方法可以避免 --allow-external?

标签 python pip setuptools pypi

pip 安装程序的最新版本没有安装不会将其包文件上传到 PyPI 的包,除非用户明确提供 --allow-external选项 ( related answer )。

我想分发依赖于此类库的包,如 dirspec .目前我必须告诉我的包的用户通过以下命令安装我的包:

$ pip install --allow-external dirspec MyPackage

当涉及到库打包时,问题就更多了。如果我的包是一个库,我还必须告诉依赖我的包的包的作者告诉他们的用户通过以下命令安装他们的包:

$ pip install --allow-external dirspec TheirPackage

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

最佳答案

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

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

我假设,这种情况(依赖于外部包)会很流行,pip 会注意提供足够的指导性提示来解决这种依赖性。

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

$ 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...

关于python - pip:有什么解决方法可以避免 --allow-external?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014238/

相关文章:

python - 无法让 NetworkX 读取我的加权网络(+尚未找到从文件导入节点属性的方法)

python - pip3 和 pip install Mac os X 的问题

Python:为什么 pip install 不从 sdist 部署我的代码?

python - 用于coverage.py的setuptools命令

python - 无法解析位置 0 处的字符串问题

Python:重命名文件夹的前5个文件

python - 我的 Flask REST API 有多安全?

python - pip 安装安装 channel 时出错

python - pip无法卸载这个包

python 打开位于包内的配置文件