- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
是否可以让 distutils 只运行 python 模块依赖性分析(并可能安装丢失的模块)而不实际安装有问题的 python 模块?我想象一个命令如下:
./setup.py check-dependencies
这将报告目标系统上是否缺少任何依赖模块。
最佳答案
Python 打包中的依赖关系是一个令人困惑的主题。长期以来,唯一的标准是 PEP 314,它为 distutils.core 定义了
功能。用于这些参数的元素是 Python 模块名称,例如 requires
、provides
和 obsolets
参数.setupprovides=['xml', 'xml.utils']
。 PEP 对标准库的依赖关系不是很清楚(我必须依赖 Python >= 2.5 还是必须要求 'xml'
?)结果是,没有工具可以使用了这些字段(甚至不是 distutils 本身)。
然后是设置工具。它引入了其他类型的依赖项,这些依赖项使用项目 名称而不是模块,因此例如您可以使用setup(..., install_requires=['PyXML', 'Pylons'], tests_require=['nose'])
,这非常有用:人们使用唯一的项目名称在 PyPI 上发布软件,您可以在安装脚本中使用这些相同的名称来依赖它们,使用 easy_install 或 pip,您可以安装这些依赖项、模块、脚本等等。
当 distutils 的控制权在几年前再次被接管时,社区将 setuptools 的一些依赖关系的想法标准化以产生 PEP 345,现在在 distutils2 中实现,旨在取代 distutils 和 setuptools。
总结一下:- 你可能在你的设置脚本中有 distutils 风格的模块级依赖,这是无用的- 你可能有 setuptools 风格的项目级 deps,它们被基于 setuptools 的工具使用- 你可以在 setup.cfg
文件中包含符合 PEP 345 的项目级 deps,distutils2 使用它
因此,要让我们回答您的问题,您需要告诉我们您拥有哪种类型。对于所有实际问题,不应使用 distutils 样式的模块 deps,因此它留下了 setuptools 项目 deps 或新的 PEP 345 样式的,它们仍然是新的且尚未广泛使用。 distutils2 有一个用于设置工具的兼容层,因此可以使用它从基于设置工具的 setup.py
脚本中获取您想要的信息。
与打包工具无关,还有一个工具可以扫描你的代码找到你正在使用的模块:它是modulefinder模块,在标准库中,它不是很为人所知或使用,从悲伤的状态来看它的代码。此工具不会告诉您使用的模块是来自标准库还是第三方项目,也不会告诉您要在 setup.py
或 中使用的项目名称setup.cfg
文件。
HTH
关于python - distutils 可以在不安装的情况下执行依赖性检查吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405271/
我正在使用 puppet 在云基础设施上自动配置服务器。我将 list 分成几个 .pp。 我有以下错误: Could not find dependency Mehc_module::Filestr
我开始学习 Angular ,但我在管理依赖项时遇到麻烦,并且不明白为什么这不起作用。 我的html: Title
我正在尝试编写一个使用 jnetpcap 并适合 Linux 和 Windows 的程序。我使用 Maven 编译我的程序。 目前对 jnetpcap 的依赖是: jnetpcap
我很难弄清楚这一点,我首先提到类结构: 汽车经销商 汽车工厂 汽车(界面) BlueCar(汽车实现) RedCar(汽车实现) 轮胎 CarFactory 类有一个返回 Car 的工厂方法。在 Sp
我正在研究一些示例,并提出了这个可行的答案 - 文档测试中设置的挑战: def remove(sub, s): """ >>> remove('an', 'banana')
当创建一个由其他类组成的类时,是否值得通过使用指针而不是值来减少依赖性(从而减少编译时间)? 例如,下面使用值。 // ThingId.hpp class ThingId { // ... }
我在为 debug 和 release 构建类型以及维度指定不同的依赖项时遇到问题。 在我的 app.gradle 中,我指定了 1 个维度 和 2 个 productFlavors,如下所示: an
我试图从Grails的默认依赖项中排除Apache Commons库1.4.0版,因为它有一个错误。 https://github.com/grails/grails-core/issues/9000
我使用我的 MacBook 开发了一个 Node.JS 小应用程序。一切都很好,我将把它部署到 Heroku。 git push heroku master 命令退出并出现错误: 9045 info
我在数据库中有几行。我创建了一个 Windows 服务,它每 5 分钟更新一次数据库中的新行。 现在我想跟踪新行,如果有任何......在 WCF 服务中,并向客户端发送有关它的通知。 数据库是SQL
我的程序依赖于 USER32.dll、SHELL32.dll、ADVAPI32.dll、WS2_32.dll、GDI32.dll 和 KERNEL32.dll。都在system32文件夹中。有什么方法
我有 3 个 dag A、B 和 C。只有在 dag A 和 B 中的任务完成后,才应触发 Dag C。有没有办法在 Airflow 中实现这一点?我能够使用 Triggerdagrun Operat
为了编写可重用的 QML 代码,我正在寻找一个(静态代码)检查器,它可以检测不同 qml 文件之间不需要的依赖关系。 举一个例子,其中 B.qml 依赖于 A.qml 中的标识符: A.qml Ite
我创建了 pom.ml 文件,如下所述: 4.0.0 friendr-core friendr-core 0.0.1-SNAPSHOT jar fri
下图中,左边是C代码,右边是未优化的LLVM IR形式。 The Figure 在 IR 上运行 MemoryDependenceAnalysis 可查找内存依赖性。原始代码及其 IR 等效代码中
我有所有必要的依赖: ch.qos.logback logback-classic 1.0.13 org.slf4j slf4j-api 1.7.
我使用 wsimport 从 WSDL 文件生成客户端代码,我已成功测试此生成的代码并且它可以工作,但有一个问题,该代码像这样引用 WSDL 文件, static { URL url = nu
我正在制作一个检查库依赖性的 configure.ac 文件。 完整的代码是, AC_CONFIG_AUX_DIR([build-aux]) AC_INIT([myprogram], [0.1], [
我正面临这个似乎无法解决的问题。这是场景: 我正在构建使用 gradle 依赖项的 apk,并且此依赖项是特定于体系结构的,因此对于 x86 的 apk,我需要不同的依赖项,对于 arm 也需要不同的
我正在使用 npm 安装依赖项。安装这些之后,我想与非技术人员且没有 npm 的人共享我的项目,因此我想在应用程序中发布 node_modules。 但是,由于 node 嵌套了依赖关系,它创建的文件
我是一名优秀的程序员,十分优秀!