您想要的是
--embedCython编译器的标志。没有一吨就可以了文件,但是这是我能找到。它确实链接到一个简单的工作示例。
要将Cython源代码编译为C文件,然后可以将其编译为可执行文件,请使用类似的命令
cython myfile.pyx--embed,然后使用正在使用的任何C编译器进行编译。
编译C源代码时,您仍然需要在目录中包含Python标头,并链接到系统上对应的Python共享库(文件名称类似
libpython27.so,
libpython27.a如果您使用的是Python
2.7)。
编辑: 这是有关如何获取命令的更多说明,这些命令包括正确的标头和针对正确的库的链接。
如前所述,您需要像这样运行Cython编译器:
cython <cython_file> --embed
要使用gcc进行编译,您将需要找到python标头在系统上的位置(您可以通过运行获取此位置
distutils.sysconfig.get_python_inc()(必须首先将其导入)。它可能只是
/includePython安装目录中的子目录。
您还必须找到python共享库。对于Python
2.7,它将
libpython27.a在Windows或
libpython2.7.soLinux上。
您的gcc命令将是
gcc <C_file_from_cython> -I<include_directory> -L<directory_containing_libpython> -l<name_of_libpython_without_lib_on_the_front> -o <output_file_name>
包含该
-fPIC标志可能是明智的。在Windows 64位计算机上,您还必须包括
-D MS_WIN64告诉mingw为64位窗口编译的标志。
如果要编译依赖于NumPy的内容,则还需要包括包含NumPy标头的目录。您可以通过运行来找到该文件夹
numpy.get_include()(同样,在导入numpy之后)。然后,您的gcc命令变为
gcc <C_file_from_cython> -I<include_directory> -I<numpy_include_directory> -L<directory_containing_libpython> -l<name_of_libpython_without_lib_on_the_front> -o <output_file_name>
该gcc命令选项指南可能会有所帮助。
另外,如果可能的话,我建议您使用Cython内存视图。这样可以避免您在Cython文件中包含NumPy标头并将NumPy
pxd文件包含在内。这也使切片操作更易于C编译器优化。



