Skip to content

fix: fail when build from source#147

Open
ZhaJiMan wants to merge 4 commits intoCyanideCN:masterfrom
ZhaJiMan:build
Open

fix: fail when build from source#147
ZhaJiMan wants to merge 4 commits intoCyanideCN:masterfrom
ZhaJiMan:build

Conversation

@ZhaJiMan
Copy link
Contributor

@ZhaJiMan ZhaJiMan commented Jan 23, 2026

问题:在 linux 上下载 cinrad 包时因为没有 whl 文件,只能从源码开始构建,然后因为缺失 numpy 和 cython 依赖而失败。
目标:没有 whl 或者本地安装时都能直接安装/构建成功。

改动:

  • 新增 pyproject.toml,填入构建时所需的 setuptools、numpy、cython 依赖
  • 去掉 setup.py 当没有安装 cython 时直接从 c 代码编译的行为,因为:
    • .gitignore 里声明了忽略 c 代码,导致 git clone 下来后还是要安装 cython
    • c 代码是根据 numpy 和 cython 版本自动生成的,例如 pypi 下载的源码里 c 代码是用 numpy v1 生成的,导致构建和运行时必须使用 numpy v1 依赖
    • 强制要求安装 cython 有助于避免踩到第二个坑
  • README 中用 pip install . 替代 python setup.py,前者会自动根据 pyproject.toml 安装构建时依赖
  • 修改 .github 目录下的 CI 文件:
    • python -m pippython -m build 现在都会自动安装构建时依赖
    • 构建时不需要 conda 以及 environment.yaml 中那么多依赖,所以改用简单的 setup-python action,CI 耗时从 5 分钟降到 1 分钟
    • 加入 macos 平台

bld.batbuild.sh 似乎是本地运行的脚本,里面仍然用的 python setup.py

@CyanideCN
Copy link
Owner

CI那边搭了完整环境是因为之前考虑自动跑测试,我觉得先留着比较好,其他都没啥问题。
你最后提到的那两个脚本是 #50 来的,我自己不用conda所以也没用过。

@ZhaJiMan
Copy link
Contributor Author

没有删除 CI 的功能,两个 CI 跟以前一样:自动测试能否构建 wheel 和通过 pytest 测试。只是发现如果显式指定了构建时的依赖,就可以顺便简化 CI 里的步骤,加速 CI 过程。以及 ci.yml 是在 conda 环境里构建 wheel 的,而 README 里给出的一般安装方式是用 pip,我觉得那 CI 也用 pip 环境会更一致。

如果是还有别的本地测试的考虑的话,那我就 revert CI 上的改动。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants