我有三个 .pyx 文件,one.pyx,two.pyx,main.pyx。我 cythonize one.pyx,得到 one.pyd,然后 cimport one 到 two.pyx。然后我 cythonize two.pyx,然后 cimport one 和 cimport two 到 main.pyx。这样,我就可以访问 one.pyx 和 two.pyx.
中的函数然后我尝试 cython main.pyx 得到 main.c,然后使用 gcc 编译 main.c,得到 main.exe。当我在本地运行这个文件时,它起作用了。但是,当我尝试使用 .gitlab-ci.yml 时,它失败并显示 main.pyx 文件中没有模块一,即使我尝试运行 main.exe.
--
one.pyx
function()
--
cythonize -i one.pyx
--
two.pyx
cimport one
one.function()
function2()
--
cythonize -i two.pyx
--
main.pyx
cimport one
cimport two
one.function()
two.function2()
--
cython main.pyx --embed
--
gcc -I/path/to/includes main.c -o main
--
主要
(工作正常)
--
.gitlab-ci.yml
stages:
- build
- test
image: python:3.9.16
before_script:
- apt-get clean
- apt-get --allow-unauthenticated update
- apt-get upgrade
- apt-get install -y gcc
- apt-get update
- apt-get install libexpat1-dev
- apt search '^python\[0-9\]\*-dev'
- python3 --version
build-job:
stage: build
script:
- echo "Compiling the code..."
- gcc -v -DSIZEOF_VOID=8 -DMS_WIN64 main.c -I /path/to/includes-lpython3.9 -o main
- echo "Compile complete."
artifacts:
paths:
- main
test-test-job:
stage: test
script:
- echo "Running tests."
- ./main
- echo "Code coverage is 90%"
--
测试作业的错误信息:
Traceback (most recent call last):
File "main.pyx", line 1, in init main
cimport two
ModuleNotFoundError: No module named 'one'
我不确定如何解决这个问题,因为我是 Gitlab Yaml 文件和 cython 的新手。我试过更改导入语句,但我认为它无法识别这两个 .pyd 文件。