RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1026706
Accepted
hedgehogues
hedgehogues
Asked:2020-09-22 02:45:38 +0000 UTC2020-09-22 02:45:38 +0000 UTC 2020-09-22 02:45:38 +0000 UTC

在 setup.py 中安装依赖项

  • 772

我正在从存储库制作一个包。

我有一个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 中运行。

python-3.x
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. hoefling
    2020-09-28T07:25:19Z2020-09-28T07:25:19Z

    实际上,您的问题是萝卜中的包被称为table-test:

    setuptools.setup(
        name="table-test",
        ...
    )
    

    并且在依赖项中一个不存在的包table-tests。dependency_links与它无关。只需修复包或依赖项的名称并将它们带到一个共同点。

    顺便说一句,关于评论中的建议:poetry这里没有帮助 - 你还需要在那里写“包名/项目链接”对,a la

    [tool.poetry.dependencies]
    table-test = { git = "https://github.com/hedgehogues/table-tests.git", tag = "0.4.1" }
    

    也不是在 PyPI 上发布项目,它也将由元数据中的包名称索引,从链接https://pypi.org/project/table-test下载并通过安装

    pip install table-test
    

    不是table-tests。

    虽然一般来说切换到poetry高效的建议,恕我直言,对于简单的用例来说它更方便,并且声明性方法比编写脚本更好。

    • 1
  2. Best Answer
    hedgehogues
    2020-09-22T15:39:13Z2020-09-22T15:39:13Z

    一种解决方案是将包添加到pypi.org. 这很简单。为此,您只需要阅读这篇文章。与往常一样,存在细微差别。例如,在许多文章中,他们编写了一个过时的存储库。如果您的存储库已过时,它会setuputils发誓并且您会知道它。您的 .pypirc 文件应如下所示:

    [distutils]
    index-servers=pypi
    
    [pypi]
    repository=https://upload.pypi.org/legacy/ 
    username=my-username
    password=my-password
    

    做完这样的练习后,你可以拒绝dependency_links并只使用 clean requirements。它可以为您节省很多痛苦。

    • 0

相关问题

  • 代码不起作用

  • 是否可以在 TeleBot 中编辑用户的消息?

  • Pyinstaller 中的交叉编译

  • 如何以(dd.mm)格式获取今天的日期?

  • 'function' 类型的参数不可迭代(python3 套接字)

  • 如何根据单击的按钮在模板中显示内容?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5