编译后的独立Cython可执行文件不会包含所有原始源代码,因为Cython源代码会被编译成C语言代码,然后再被编译成机器码。只有Cython源代码中被使用到的部分会被编译成机器码,而不会包含未使用的代码。
以下是一个示例解决方法:
假设我们有一个名为"hello.pyx"的Cython源文件,其中包含以下代码:
def say_hello():
print("Hello, World!")
我们可以使用以下命令将其编译为一个独立的可执行文件:
cythonize -i hello.pyx
上述命令将生成一个名为"hello.c"的C源文件,并将其编译成一个名为"hello.so"的共享库。这个共享库包含了我们定义的函数"say_hello"的机器码。
然后,我们可以在另一个Python脚本中使用这个共享库:
from ctypes import CDLL
hello = CDLL("./hello.so")
hello.say_hello()
在这个示例中,我们只包含了"say_hello"函数的机器码,并没有包含原始的Cython源代码。