小编kra*_*cat的帖子

如果PyPI上存在依赖关系,Pip会忽略依赖于链接的依赖链接

我正在打包我自己的Python包.我使用setuptools和wheel来捆绑它和pip进行安装(在开发模式和测试PyPI存储库中).

每个用于安装包的pip命令都在--process-dependency-links这里使用.我将放下此选项以进行简化,此选项将隐含在此处.

其中一个依赖项在PyPI中被破坏,但在开发存储库问题已修复.我知道哪个提交修复了这个问题,我知道它的SHA-1总和,所以我知道要下载哪个tarball.所以我在setup.py文件中这样做了:

...
install_requires=[
    'hbmqtt>0.9.0'
],
dependency_links=[
    'https://github.com/beerfactory/hbmqtt/archive/f4330985115e3ffb3ccbb102230dfd15bb822a72.zip#egg=hbmqtt-0.9.1'
],
...
Run Code Online (Sandbox Code Playgroud)

当我在开发模式下安装软件包(通过setuptools和pip)时,从git repo下载软件包.然后我可以分发我的包的源代码.

python setup.py sdist
twine upload -s --sign-with gpg2 -r testpypi dist/<pkg-name>-<version>.tar.gz
Run Code Online (Sandbox Code Playgroud)

然后我可以从PyPI安装它.如果我没有同时设置--no-cache-dir--no-binary :all:选项(--no-cache-dir只需要确保没有从缓存中安装包),首先安装看起来没问题.Pip下载源然后制作轮子.解决依赖关系很顺利,一切看起来都还可以.Pip下载适当版本的(在我的示例中)HBMQTT包并安装它.同时pip制作轮子然后缓存它.所以,第二次安装(无--no-binary选项明显的理由,并与--upgrade-I期权)失败,因为不满足要求:PIP不能与0.9.1版本找到HBMQTT包.PyPI中HBMQTT的最新版本是0.9.0.因此pip在尝试从wheel包安装时不会处理依赖关系链接.

当我尝试制作wheel(python setup.py bdist_wheel)并将其上传到测试PyPI时,会发生同样的事情.从PyPI安装失败以及从下载(或由我制作)轮文件失败.

我认为麻烦位于点或轮.我不知道哪一个负责从车轮安装.

所以我的问题是我现在应该做些什么?对于这种情况,确实存在哪些变通办法?我认为只有分支要求HBMQTT仓库并制作我自己的包,直到PyPI破坏了包裹.

python distutils pip setuptools python-wheel

6
推荐指数
1
解决办法
746
查看次数

标签 统计

distutils ×1

pip ×1

python ×1

python-wheel ×1

setuptools ×1