我正在从存储库制作一个包。
我有一个gitrep,我想将其作为依赖项。它注册于requirements
:
table-tests==0.4.1
requests==2.22.0
pytest==5.0.1
python-dotenv==0.10.3
另外,在 中setup.py
,我这样做:
import setuptools
def parse_requirements(filename):
""" load requirements from a pip requirements file """
lineiter = (line.strip() for line in open(filename))
return [line for line in lineiter if line and not line.startswith("#")]
with open("README.md", "r") as fh:
long_description = fh.read()
install_reqs = parse_requirements('./requirements')
print(install_reqs)
setuptools.setup(
name="email-clients",
version="1.0.0",
author="Egor Urvanov",
author_email="hedgehogues@bk.ru",
description="Email clients for grader and other services of fless.pro",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/Hedgehogues/email-clients",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3.7+",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
dependency_links=[
'git+https://github.com/hedgehogues/table-tests@0.4.1#egg=table-tests-0.4.1'
],
install_requires=install_reqs,
)
这里很重要:dependency_links
. 运行安装后,出现错误:
已安装
/home/eurvanov/anaconda3/envs/grader-email-client/lib/python3.7/site-packages/email_clients-1.0.0-py3.7.egg
电子邮件客户端的处理依赖项==1.0.0
table-tests==0.4.1 做 git clone
https://github.com/hedgehogues/table-tests到
/tmp/easy_install-1k_z5dsc/table-tests@0.4.1 签出 0.4.1 最佳
匹配:table-tests 0.4.1 处理 table-tests@0.4.1 写作
/tmp/easy_install-1k_z5dsc/table-tests@0.4.1/setup.cfg 正在运行
setup.py -q bdist_egg --dist-dir
/tmp/easy_install-1k_z5dsc/table-tests@0.4.1/egg-dist-tmp-geyxx6dh
未设置 zip_safe 标志;分析存档内容...删除
/home/eurvanov/anaconda3/envs/grader-email-client/lib/python3.7/site-packages/table_test-0.4.1-py3.7.egg
将 table_test-0.4.1-py3.7.egg 移动到
/home/eurvanov/anaconda3/envs/grader-email-client/lib/python3.7/site-packages
table-test 0.4.1 已经是 easy-install.pth 中的活动版本
已安装
/home/eurvanov/anaconda3/envs/grader-email-client/lib/python3.7/site-packages/table_test-0.4.1-py3.7.egg
错误:未找到“table-tests==0.4.1”分发,电子邮件客户端需要此分发
但是,安装成功。但是,我想摆脱错误。此外,摆脱 bug 的动机是需要在 docker 中运行。
实际上,您的问题是萝卜中的包被称为
table-test
:并且在依赖项中一个不存在的包
table-tests
。dependency_links
与它无关。只需修复包或依赖项的名称并将它们带到一个共同点。顺便说一句,关于评论中的建议:
poetry
这里没有帮助 - 你还需要在那里写“包名/项目链接”对,a la也不是在 PyPI 上发布项目,它也将由元数据中的包名称索引,从链接https://pypi.org/project/table-test下载并通过安装
不是
table-tests
。虽然一般来说切换到
poetry
高效的建议,恕我直言,对于简单的用例来说它更方便,并且声明性方法比编写脚本更好。一种解决方案是将包添加到
pypi.org
. 这很简单。为此,您只需要阅读这篇文章。与往常一样,存在细微差别。例如,在许多文章中,他们编写了一个过时的存储库。如果您的存储库已过时,它会setuputils
发誓并且您会知道它。您的 .pypirc 文件应如下所示:做完这样的练习后,你可以拒绝
dependency_links
并只使用 cleanrequirements
。它可以为您节省很多痛苦。