在单个“setup.py”中多次调用“setup()”是否安全?

2024-01-18

我正在开发一个包含 Cython 扩展的包。

根据https://github.com/pypa/pip/issues/1958 https://github.com/pypa/pip/issues/1958我将使用setup_requires并推迟进口Cython。 我想出的最好的解决方案是打电话setup()两次setup.py:

... # initial imports
setup(setup_requires=['cython'])
from Cython.Build import cythonize
bar = Extension('foo.bar', sources = ['bar.pyx'])
setup(name = 'foo',
      ... # parameters
      ext_modules = cythonize([bar]),
      ... # more parameters
      )

但我有一种感觉,这个名字setup()建议只调用一次。像我一样多次调用它是否安全?

我不能只分发轮子,因为该软件包也可供 Linux 用户使用。

[EDIT]

我还认为这个问题比处理编译器依赖关系更普遍。人们可能想要导入一些包(例如sphinx or pweave)来预处理包的描述。


我有一个不同的场景,我需要运行setup()多次:就我而言,我正在从相同的来源构建两个包。第一个包是一个基于的命令行工具Fabric,第二个包只是库(API、工具等)。对于这样一个小项目,将项目拆分为两个存储库似乎太不切实际,因为 CLI 部分实际上只是一个包装器。跑步setup()使用不同的参数多次导致构建因各种错误(主要是丢失文件)而崩溃。我的解决方案是运行每个setup()一样不同Process:

from setuptools import setup, find_packages
from multiprocessing import Process

if __name__ == '__main__':
    setups = [
        {
            'name': 'cli-tool',
            'description': 'Some description...',
            'packages': find_packages(),
            'entry_points': {
                'console_scripts': [
                    'cli-tool = fabfile:main'
                ]
            },
            '...': 'etc. needed for setup() ...'
        },
        {
            'name': 'cli-tool-lib',
            'packages': find_packages(exclude=('fabfile',)),
            '...': 'etc.'
        }
    ]

    for s in setups:
        name = s['name']
        print("Building '{}'.".format(name))
        p = Process(target=setup, kwargs=s)
        p.start()
        p.join()
        print("Building of '{}' done.\n".format(name))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单个“setup.py”中多次调用“setup()”是否安全? 的相关文章

随机推荐

  • Ansible concat vars 到字符串

    我花了一天的大部分时间试图解决这个问题 但到目前为止都失败了 我正在构建一些剧本来自动化 Splunk 中的功能 并尝试将清单组中的主机列表转换为 E G search head 1 2 3 4 5 6 7 8 我从该剧的调试输出中获得的预
  • 是否可以在 setup.py 中表达特定于平台的依赖项,而无需构建特定于平台的 Egg 版本?

    我们有一个占位符 Egg 它不包含任何代码 其存在的目的只是为了从 PyPi 存储库中提取依赖包列表 大多数这些依赖包与平台无关 但有些仅在 Win32 平台上使用 是否有可能以某种方式使依赖项成为有条件的平台 以便我的给定依赖项insta
  • 幕后:ORM 如何“思考”?

    我对 Rails ActiveRecord PHP Doctrine 以及类似的 ORM 背后的一些设计感兴趣 ORM 如何设法实现链式访问器等功能以及它们通常期望工作的深度 ORM 如何在内部构造查询 ORM 如何管理查询 同时维持所有预
  • javascript 设置标头 Access-Control-Allow-Origin [重复]

    这个问题在这里已经有答案了 我正在用 POST 测试 JS 但我并没有取得成功 使用代码 div testing js div
  • GCC 内联汇编:约束

    我很难理解 GCC 内联汇编 x86 中的角色约束 我有阅读手册 http gcc gnu org onlinedocs gcc Constraints html Constraints 它准确地解释了每个约束的作用 问题是 尽管我了解每个
  • 如何使用 Firebase Cloud Functions Storage 创建文件夹

    我怎样才能制作文件夹 帖子 存储桶 gt gs app appspot com posts code exports generateThumbnail functions storage object onChange event gt
  • 如何在 iOS 应用程序中使用 Fabric 注销 Twitter

    共享实例注销不起作用 我知道这对开发人员来说是一个大问题 有没有人有办法解决吗 谢谢 大约三个月前我遇到了这个问题 现在刚刚找到了解决方案 显然 清除 cookie 实际上会删除 Twitter 为之前登录的用户存储的信息 下面的代码对我有
  • 当对象穿过路径时,对路径进行动画处理的最简单方法是什么?

    考虑一个穿过长线性路径的矩形 弄清楚形状在动画早期的位置会很有用 在形状移动之前显示整个路径不是我想要的 通过将路径添加到窗格中可以轻松完成此操作 我想要在形状后面有一条尾线 代表该形状迄今为止所经过的路径 有谁知道如何在 Javafx 中
  • JDK7 中菱形接口的意外行为

    我的 JSF 托管 bean 中有一个属性 private List
  • Android ImageView 设置 Bitmap FitXY 不起作用

    我已经尝试了很长时间来设置位图 使其适合ImageView界限 它只是不起作用scaleType fitXY 我的位图图像尺寸小于ImageView的 保存为 100X100 像素 我希望我的位图图像适合并拉伸到ImageView 这是一些
  • 如何设置 dll 的入口点

    首先 我认为 dll DLLMain 中的入口点 但是当我尝试在 C 中导入它时 我收到一个错误 找不到入口点这是我的代码 include
  • 不使用 Apache POI 解析 Excel 文件

    我知道我们可以使用 Apache POI 来解析 Excel 文件并获取数据 但我听说一个奇怪的事情 Excel 文件可以以与我们解析 CSV 类似的方式传递 就像从文件流中读取文件并用 逗号 分隔符分隔每个列值 当我们解析Excel时 我
  • 默认 Java 密钥库包含哪些密钥?

    我了解默认的 Java 信任库包含根证书和其他与信任相关的证书 但是 默认 Java 密钥库中存储了哪些密钥 据我所知 密钥库用于 在 SSL 握手期间应将哪些身份验证凭据发送到远程主机进行身份验证 如果您是 SSL 服务器 您将在密钥交换
  • Solr (JVM) 每小时峰值

    SOLVED 在我们的例子中 问题是 SuggestRequestHandler requestHandler name suggest 现在已经设置了facelimit 10 此外 应用程序提出的每个建议请求都有多个请求 为什么这会导致
  • 在 WPF MVVM 中动态添加控件

    我正在开发一个动态搜索视图 其中单击按钮应添加一个包含 3 个组合框和 2 个文本框的新行 我该怎么做呢 如果您真的想做 mvvm 请尝试忘记 如何添加控件 您不必这样做 只需考虑您的视图模型 WPF 会为您创建控件 在您的情况下 假设我们
  • 使用 Comparable 比较通用变量

    对于我班级中的一个作业 我们有一个名为 Pair 的类的集合 我们需要根据键的值按升序对其进行排序 如果键是字符串或整数 我可以应用此方法 但是如何编写代码来比较我的项目 当它们是通用的时 如下所示 我班上的教授解释了如何处理整数或字符串
  • 为什么显示“更新Git索引失败”

    我正在使用Windows 当暂存文件时 我收到此错误 Updating the Git index failed A rescan will be automatically started to resynchronize git gui
  • 添加 HTTPS 支持会导致循环重定向

    我在 Web 应用程序中使用 Spring Security 框架 我已经安装了 SSL 证书并且能够通过以下方式访问我的应用程序https 现在 当我添加requires channel https 归属于所有人intercept url
  • AngularJS element.innerHTML 在指令中未定义

    假设我有 directives directive foo function return restrict A scope true link function scope element attr console log innerHT
  • 在单个“setup.py”中多次调用“setup()”是否安全?

    我正在开发一个包含 Cython 扩展的包 根据https github com pypa pip issues 1958 https github com pypa pip issues 1958我将使用setup requires并推迟