gpt4 book ai didi

python - 在 Mac 上将使用 Cython 编译的 c 模块导入到 python 模块时出错

转载 作者:行者123 更新时间:2023-11-30 19:26:18 25 4
gpt4 key购买 nike

我有一个从 pyx 文件编译为 c 文件的 Cython 模块,我试图在 python 模块中导入和使用它。我在 Mac 上运行 python 3.6。当我运行 gcc -v 时,输出是:

配置为:--prefix=/Library/Developer/CommandLineTools/usr - -with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2 .1 Apple LLVM 版本 10.0.1 (clang-1001.0.46.4) 目标:x86_64-apple-darwin18.7.0 线程模型:posix InstalledDir:/Library/Developer/CommandLineTools/usr/bin

运行 python setup.py build 和 python setup.py install 没有错误,并且相应文件的 .so 和 .c 文件出现在路径上的正确目录中。

当我尝试导入模块时,我在 init 文件中尝试导入另一个子模块的行中收到错误:

from . import subModule

我尝试更新 python 和 Cython,并且确保 gcc 位于 user/lib 中。

这是我的 setup.py 文件:

from Cython.Build import cythonize


setupArgs = dict(
name="module",
version="1.1.0",
description=description,
url="https://github.com/XXXX/XXXXX/module",
author="CTcue",
author_email="info@XXXXXX.com",
ext_modules=cythonize(["module/*.pyx"]),
)


# Use distutils setup
from distutils.core import setup

setup(**setupArgs)

这是错误消息:

 File "module/subModule.pyx", line 4, in init module.subModule
ModuleNotFoundError: No module named 'thirdModule'

有问题的第三个模块有一个 .c 文件和一个 .so 文件,与 .pyx 文件相对应,据我所知,那里的一切都是有序的。

模块的init.py:

__title__     = 'Pseudonomizer'
__version__ = '1.0.2'
__author__ = 'CTcue'
__license__ = 'Proprietary'
__copyright__ = 'Copyright 2016 CTcue'

from . import subModule

子模块:

import thirdModule

thirdModule.doSomething()

第三个模块:

import re
from . import anotherModule

def doSomething:
#code that does something

编辑:为了查看编译器是否有错误,我尝试使用“gccthirdModule”手动编译thirdModule的.c文件,并收到以下错误:

Undefined symbols for architecture x86_64:

这似乎表明该问题与编译器相关,但我仍然没有找到解决方案。

任何帮助将不胜感激。

最佳答案

事实证明 @ead 是对的,问题是该模块具有隐式相对导入,这在 python 3 中不再允许。

关于python - 在 Mac 上将使用 Cython 编译的 c 模块导入到 python 模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57605484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com