首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与PyPi冲突

与PyPi冲突
EN

Stack Overflow用户
提问于 2020-02-18 18:39:07
回答 3查看 910关注 0票数 6

我有一个项目需要一些DevOps薄层,所以我终于建立了我的安装脚本。这最终将是一个软件包,将可在本地安装,但可能不会在PyPI结束。

它有一个名为u2py的模块的依赖项。它是,为U2数据库操作创建,https://pypi.org/project/u2py/,用于.一些其他的东西。我想要的只有第三方供应商(火箭)才能安装,我不想要的是PyPI。

在本例中我的包的预期行为应该是什么?我将在自述文件中包含一个关于这一点的模糊信息,但这足够了吗?

我曾想过抛出一个异常来确定何时出现了错误的包,但这让我感到很奇怪。似乎最重要的是不把它添加到我的安装脚本中,盲目地假设import u2py会产生一个我可以使用的模块。如果它像鸭子一样嘎嘎叫,把DynArray像鸭子一样解析,call()SUBROUTINE像鸭子,那么它就是鸭子,对吗?否则,如果出现错误,用户将直接去实际读取文档。

我看过classifiers,但不确定它们是否适用于这里。

EN

回答 3

Stack Overflow用户

发布于 2020-02-18 20:09:44

理想情况下,安装时(在setup.py中)应该有一种方法来检测包是否安装到"u2环境“中,如果是这样的话,安装可能会失败(带有适当的错误消息)。

使用此解决方案,您将无法提供构建的发行版(轮子),因为它们在安装时不执行setup.py文件,但是只发布源发行版应该可以。

票数 2
EN

Stack Overflow用户

发布于 2020-02-18 20:51:29

在这种情况下,如果Python项目有名称空间(pip install com.rocket.u2pyimport com.rocket.u2py as u2py),那就太好了。

在我看来,有两个方面需要考虑:在项目层面,在包层面。

1.项目(分发包)

我认为强制选择下载源到项目的最终用户是一种糟糕的做法。默认情况下,pip应该从PyPI下载,而不是从其他地方下载,除非用户自己决定(通过--find-links或类似的选项,您可以在文档中指示用户这样做)。

由于它是一个特殊的依赖项,我想我根本不会将它添加到install_requires中。我假设您的项目的最终用户已经知道这个依赖项,并且能够自己直接安装它。

另外,我认为在安装时不可能可靠地检查是否安装了正确的依赖项,因为setup.py并不总是运行(重写bdist_wheel命令可能有帮助,但可能不是100%有效)。

2.包(进口包)

我不确定是否需要采取一些具体行动。代码很可能迟早会失败,因为模块或函数不重要。可能没问题吧-也许吧?

但是,很可能检测是否安装了依赖项(而且它是正确的),相对容易,并且会提供更好的用户体验。或者检查某些特定的模块或函数是否是重要的。或者检查元数据(import importlib_metadata; importlib_metadata.distribution('u2py').metadata['Author'])。

在应用程序的情况下,我会尽快尝试优雅地失败。对于库,我会尝试找到一个策略点来放置检查并引发自定义异常(CannotFindU2pyException)。

链接:

票数 2
EN

Stack Overflow用户

发布于 2020-02-18 20:21:09

您可以使用setuptools为install_requires中的包指定url (需要pip版本18.1或更高版本)。

需求说明符

示例

setup.py

代码语言:javascript
复制
import setuptools

setuptools.setup(
    name='MyPackage',
    version='1.0.0',
    # ...
    install_requires=[
        'requests @ https://github.com/psf/requests/archive/v2.22.0.zip'
    ]
    # ...
)

python setup.py install

也是

自19.1版以来,pip还支持以下直接引用: file:///somewhere/... @ SomeProject

参考

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60287455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档