我在使用setup.py来点点安装我的软件包时遇到了麻烦,该软件包也具有依赖项链接。我已经仔细阅读了this answer和this one,但没有一个答案,包括被接受的答案都可以帮助您。
这是尝试安装的软件包的setup.py。
基本上,它会读取requirements.txt来填充install_requires和dependency_links,其余大部分代码都是cookie-cutter的样板。 requirements.txt中有一个私人的github存储库,这是导致问题的原因。例如git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy
当我运行pip install -r requirements.txt
时,一切正常,它将安装私有存储库。但是,如果尝试使用pip install . --process-dependency-links
安装,则会出现此错误:
Could not find a version that satisfies the requirement pripy (from mypackage==<sha>) (from versions: )
No matching distribution found for pripy (from mypackage==<sha>)
如果我从需求链接中删除了#egg=xxx
,则pip install .
会完全忽略私有回购软件包,而pip install -r requirements.txt
不会完全忽略私有回购软件包。
我已确认dependency_links
包含'git+https://<actual-token>@github.com/jmerkow/pripy.git#egg=pripy'
,并且install_requires
包含'pripy'
如何正确设置安装程序,这是子软件包的问题吗?除了没有专用链接外,该回购中的setup.py
几乎相同。
答案 0 :(得分:2)
呃,这总是发生。我把所有工作都交给了问题,然后我自己弄清楚了。
问题是两件事,首先,所有dependeny_links都需要一个版本,其次要从需求文件中正确提取版本,您需要对字符串做一些魔术。
与上述setup.py相比,我更改了将需求添加到两个列表中的方式(更新了here)。然后将版本添加到链接上的#egg=xxx
,例如
git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy-0
。
现在setup.py将解析该文件,获取egg版本信息,将其转换为pip版本(基本上将第一个'-'
替换为'=='
)以进行install_requires,然后很好。