由于未知类型名称’uint64_t’,Cythonizing失败

这可能是一个新手问题。 我无法cython化一个简单的helloworld.pyx教程脚本,而完全相同的代码适用于linux:

print("hello world") 

这是setup.py脚本:

 from distutils.core import setup from Cython.Build import cythonize setup(ext_modules = cythonize('helloworld.pyx')) 

但是我在运行python setup.py build_ext --inplace后得到了这个:

 running build_ext building 'helloworld' extension creating build creating build/temp.macosx-10.7-x86_64-3.6 gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/haotian/anaconda3/include -arch x86_64 -I/Users/haotian/anaconda3/include -arch x86_64 -I/Users/haotian/anaconda3/include/python3.6m -c helloworld.c -o build/temp.macosx-10.7-x86_64-3.6/helloworld.o In file included from helloworld.c:16: In file included from /Users/haotian/anaconda3/include/python3.6m/Python.h:34: In file included from /usr/include/stdlib.h:65: In file included from /usr/include/sys/wait.h:110: /usr/include/sys/resource.h:196:2: error: unknown type name 'uint8_t' uint8_t ri_uuid[16]; ^ /usr/include/sys/resource.h:197:2: error: unknown type name 'uint64_t' uint64_t ri_user_time; ^ /usr/include/sys/resource.h:198:2: error: unknown type name 'uint64_t' uint64_t ri_system_time; ^ /usr/include/sys/resource.h:199:2: error: unknown type name 'uint64_t' uint64_t ri_pkg_idle_wkups; ^ /usr/include/sys/resource.h:200:2: error: unknown type name 'uint64_t' uint64_t ri_interrupt_wkups; ^ /usr/include/sys/resource.h:201:2: error: unknown type name 'uint64_t' uint64_t ri_pageins; ^ /usr/include/sys/resource.h:202:2: error: unknown type name 'uint64_t' uint64_t ri_wired_size; ^ /usr/include/sys/resource.h:203:2: error: unknown type name 'uint64_t' uint64_t ri_resident_size; ^ /usr/include/sys/resource.h:204:2: error: unknown type name 'uint64_t' uint64_t ri_phys_footprint; ^ /usr/include/sys/resource.h:205:2: error: unknown type name 'uint64_t' uint64_t ri_proc_start_abstime; ^ /usr/include/sys/resource.h:206:2: error: unknown type name 'uint64_t' uint64_t ri_proc_exit_abstime; ^ /usr/include/sys/resource.h:210:2: error: unknown type name 'uint8_t' uint8_t ri_uuid[16]; ^ /usr/include/sys/resource.h:211:2: error: unknown type name 'uint64_t' uint64_t ri_user_time; ^ /usr/include/sys/resource.h:212:2: error: unknown type name 'uint64_t' uint64_t ri_system_time; ^ /usr/include/sys/resource.h:213:2: error: unknown type name 'uint64_t' uint64_t ri_pkg_idle_wkups; ^ /usr/include/sys/resource.h:214:2: error: unknown type name 'uint64_t' uint64_t ri_interrupt_wkups; ^ /usr/include/sys/resource.h:215:2: error: unknown type name 'uint64_t' uint64_t ri_pageins; ^ /usr/include/sys/resource.h:216:2: error: unknown type name 'uint64_t' uint64_t ri_wired_size; ^ /usr/include/sys/resource.h:217:2: error: unknown type name 'uint64_t' uint64_t ri_resident_size; ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. error: command 'gcc' failed with exit status 1 

我使用的是MacOS 10.13.1,python 3.6.3,Cython 0.27.3和clang-900.0.38。

显然包含stdint.h有问题,我应该如何在Cython中进行呢?

编辑 :我的gcc在/ usr / bin / gcc中

 gcc --version 

说明:

 Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 9.0.0 (clang-900.0.38) Target: x86_64-apple-darwin17.2.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin 

我找到了解决问题的方法。

似乎在安装High Sierra之后,/ usr / local / include中的某些头文件被搞砸了,导致brew安装出现故障。 卸载并重新安装brew解决了这个问题。

 rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )" 

迁移到新Mac后,我遇到了类似的情况。 只是重新安装brew并没有解决问题。 我不得不删除/usr/local/include来解决问题。

( 来自Github的Cython问题的评论 )