我有我的setup.py dependency_links:
...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...
但是,这是行不通的。 然而install_requires工作正常。 也许有设立混帐回购协议所要求的setup.py另一种方法?
我有我的setup.py dependency_links:
...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...
但是,这是行不通的。 然而install_requires工作正常。 也许有设立混帐回购协议所要求的setup.py另一种方法?
这个答案应该有所帮助。 简而言之,你需要指定的版本(或“开发”) #egg=python-s3
,所以它看起来像#egg=python-s3-1.0.0
。
根据@ Cerin的评论更新:
--process-dependency-links
。 因为我与下面的点同意我没有测试它。 我意识到这是一个老问题,但是,万一你发现自己在这里像我一样,这是为我工作。
我有一个依赖于其他的GitHub(非的PyPI)封装在GitHub上一包(未在PyPI注册)。 我花了过多的时间量试图找出如何让点子正确处理这个问题。 我将包括我做了什么在这里解决它。
在一个requirements.txt文件推杆依赖性是列出相关性的优选方法。 但是,您也需要填充install_requires的设置。 正是在这个阶段,我遇到了与PIP不想从GitHub安装依赖的路障。
大部分地方,包括这个问题的答案,告诉你填充设置的dependency_links部分。 但是,您也需要填充install_requires场与dependency_links引用的包的名称。
例如,如果你的requirements.txt包含以下。
somepackage==1.2.0
https://github.com/user/repo/tarball/master#egg=repo-1.0.0
anotherpackage==4.2.1
然后,你建立呼叫应该是这样的:
setup(
name='yourpackage',
version='1.7.5',
packages=[],
url='',
license='',
author='',
author_email='',
description='',
install_requires=[
'somepackage==1.2.0',
'repo==1.0.0',
'anotherpackage==4.2.1'
],
dependency_links=[
'https://github.com/user/repo/tarball/master#egg=repo-1.0.0'
]
)
好了,现在我们已经得到了我们的配置包; 安装它是下一个任务。 这是我花了很多时间。 我无法弄清楚,为什么指定dependency_links显然什么也没做。 诀窍是,在某些情况下,你需要设置允许,所有外部的(可以更具体)标志点子。 例如:
pip install git+https://github.com/user/anotherrepo.git
--process-dependency-links --allow-all-external
大功告成,它的作品!
免责声明:dependency_links和标志过程依赖链接和允许,所有外部的被弃用,因此,他们也将立即删除。 在我所花费的时间,我无法找到一个更好的,首选的方法,仍然有画中画功能正常。
在一些问题上有两点要注意,我发现,特别是从私人回购协议安装。
从PIP和setuptools的有一些细微的差别安装; 但这种方式应该适用于这两者。
from setuptools import setup
import os
# get deploy key from https://help.github.com/articles/git-automation-with-oauth-tokens/
github_token = os.environ['GITHUB_TOKEN']
setup(
# ...
install_requires='package',
dependency_links = [
'git+https://{github_token}@github.com/user/{package}.git/@{version}#egg={package}-0'
.format(github_token=github_token, package=package, version=master)
]
一对夫妇在这里说明:
0
),在链路的末端,即使有PyPI上没有包。 这必须是一个实际的数字,不发一言。 git+
告诉setuptools的是克隆回购,而不是在一个zip / tar文件指向 version
可以是一个分支,标签,或提交哈希 --process-dependency-links
,如果从PIP安装 因为PIP版本18.1 PEP 508 URL支持。 这意味着你不需要弃用dependency_links了。 您可以直接在install_requires列表写的依赖来代替。 从@Chad的例子是这样的:
setup(
name='yourpackage',
version='1.7.5',
packages=[],
url='',
license='',
author='',
author_email='',
description='',
install_requires=[
'somepackage==1.2.0',
'repo==1.0.0 @ https://github.com/user/archive/master.zip#egg=repo-1.0.0',
'anotherpackage==4.2.1'
],
)
要安装包,你可以简单地写:
pip install yourpackage
(无--process依赖性链接)