sya*_*bro 61 python distutils pip setuptools easy-install
我在setup.py中有dependency_links:
...
dependency_links = ['http://github.com/robot-republic/python-s3/tarball/master.tar.gz#egg=python-s3'],
...
Run Code Online (Sandbox Code Playgroud)
但它不起作用.但是install_requires工作正常.也许有另一种方法来设置setup.py所需的git repo?
Lau*_*van 60
这个答案应该有帮助.简而言之,您需要指定版本(或"dev"),#egg=python-s3
因此它看起来像#egg=python-s3-1.0.0
.
更新基于@ Cerin的评论:
--process-dependency-links
.我没有测试过,因为我同意以下观点.Cha*_*had 45
我意识到这是一个老问题,但是,如果你发现自己像我一样,这对我有用.
我在GitHub上有一个包(没有在pypi注册),它依赖于其他GitHub(非pypi)包.我花了大量的时间试图弄清楚如何正确处理这个问题.我将在此处包含我所做的修复工作.
将依赖项放在requirements.txt文件中是列出依赖项的首选方法.但是,您还需要在安装程序中填充install_requires.正是在这个阶段我遇到了一个不想从GitHub安装依赖项的路障.
大多数地方,包括此问题的答案,都会告诉您填充设置的dependency_links部分.但是,您还需要使用dependency_links中引用的包的名称填充install_requires字段.
例如,如果您的requirements.txt包含以下内容.
somepackage==1.2.0
https://github.com/user/repo/tarball/master#egg=repo-1.0.0
anotherpackage==4.2.1
Run Code Online (Sandbox Code Playgroud)
然后,您的设置调用应如下所示:
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'
]
)
Run Code Online (Sandbox Code Playgroud)
好的,现在我们已经配置了包; 安装它是下一个任务.这是我花了很多时间的地方.我无法弄清楚为什么指定dependency_links显然什么也没做.诀窍在于,在某些情况下,您需要为pip设置allow-all-external(可以更具体)标志.例如:
pip install git+https://github.com/user/anotherrepo.git
--process-dependency-links --allow-all-external
Run Code Online (Sandbox Code Playgroud)
你完成了它的工作!
免责声明:不推荐使用dependency_links和标志process-dependency-links和allow-all-external,因此很快就会将其删除.在我花费的时间里,我找不到更好的,更喜欢的方法,并且仍然有正确的pip功能.
Eas*_*ael 24
由于支持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'
],
)
Run Code Online (Sandbox Code Playgroud)
要安装您的软件包,您可以简单地编写:
pip install yourpackage
Run Code Online (Sandbox Code Playgroud)
(没有--process-dependency-links)
Max*_*ian 13
关于我发现的一些问题的几点说明,特别是从私人回购安装.
从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)
]
Run Code Online (Sandbox Code Playgroud)
这里有几点说明:
0
),即使PyPI上没有包.这必须是实际数字,而不是单词.git+
中告诉setuptools克隆repo,而不是指向zip/tarballversion
可以是分支,标记或提交哈希--process-dependency-links
如果从pip安装,你需要提供首先升级您的pip版本,因为这是新语法。
pip install pip --upgrade
Run Code Online (Sandbox Code Playgroud)
然后执行以下操作:
install_requires=[
'bleualign-git @ https://github.com/rsennrich/Bleualign/archive/<commit-hash or branch-name>.zip#egg=bleualign-git-1.0.0'
]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
评论:
好的答案(已批准)。也要提及的是,实际结果可能取决于平台和/或pip版本。我已经看到了它何时起作用,或者似乎起作用了,但是并没有真正从指定的链接中拉出依赖关系,或者只是被拒绝了。因此,我可能只将其用作短时解决方法。尽可能使用主流方式。
归档时间: |
|
查看次数: |
29464 次 |
最近记录: |