我正在打包我自己的Python包。我使用setuptools和wheel将其与pip捆绑在一起进行安装(在开发模式下和从testpypi存储库中)。在
安装包的每个pip命令都与--process-dependency-links
一起使用。为了简化,我将放弃这个选项,这个选项在这里是隐式的。在
其中一个依赖项在PyPI中被破坏,但在开发存储库中,问题已经被修复。我知道哪个提交解决了这个问题,我知道它的SHA-1和,所以我知道下载哪个tarball。所以我在我的设置.py文件:
...
install_requires=[
'hbmqtt>0.9.0'
],
dependency_links=[
'https://github.com/beerfactory/hbmqtt/archive/f4330985115e3ffb3ccbb102230dfd15bb822a72.zip#egg=hbmqtt-0.9.1'
],
...
当我在开发模式下安装包时(通过setuptools和pip),包是从git repo下载的。然后我可以分发我的包的源代码。在
^{pr2}$然后我可以从PyPI安装它。如果我不同时设置--no-cache-dir
和--no-binary :all:
选项(--no-cache-dir
只是为了确保包不是从缓存中安装的),那么第一次安装看起来没问题。Pip下载源代码,然后制作wheel。解决依赖关系进展顺利,一切看起来都很好。Pip下载适当版本的(在我的示例中)HBMQTT包并安装它。同时,皮普制作轮子,然后将其缓存。所以第二次安装(由于明显的原因没有--no-binary
选项,带有--upgrade
和-I
选项)由于未满足要求而失败:pip找不到版本为0.9.1的HBMQTT包。PyPI中HBMQTT的最新版本是0.9.0。所以pip在尝试从wheel包安装时不处理依赖链接。在
同样的事情也发生在我尝试制作wheel(python)时设置.pybdist_wheel)并将其上载到test PyPI上。从PyPI安装失败,也无法从下载的(或由我自己制作)wheel文件安装。在
我想问题出在点或轮上。我不知道哪一个负责从车轮上安装。在
所以我的问题是我现在该怎么办?本案有哪些变通办法?我只考虑分拆HBMQTT repo并制作自己的包,直到PyPI破坏了这个包。在
您是否尝试了
process-dependency-link
标志?在https://github.com/pypa/pip/issues/4295
编辑:对不起,我知道你试过了。对我来说这解决了问题,但这对你没什么用。在
相关问题 更多 >
编程相关推荐