我正在打包我自己的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破坏了包裹.