我正在使用Windows操作系统,拥有Visual Studio及其相关的所有构建工具。我有一个简单的Python脚本,并使用Cython生成了一个“C”文件。我正在尝试将此C文件转换为可执行文件,但不想使用其他模块,如pyinstaller、py2exe或cxFreeze。
已成功将.py文件转换为C文件,但是在将此C文件转换为可执行文件时遇到了一些错误。请问是否有人能够帮助我?我查阅了许多关于此问题的其他问题,但它们都没有这个问题。
以下是我的(.pyx脚本):
我在CMD中使用以下命令构建了这个脚本的C扩展:
这会产生以下错误:
我已附上下面的错误屏幕截图。
请参见图片描述。
已成功将.py文件转换为C文件,但是在将此C文件转换为可执行文件时遇到了一些错误。请问是否有人能够帮助我?我查阅了许多关于此问题的其他问题,但它们都没有这个问题。
以下是我的(.pyx脚本):
from tkinter import Tk
root = Tk()
root.mainloop()
我在CMD中使用以下命令构建了这个脚本的C扩展:
python setup.py build_ext --inplace -DMS_WIN64
然后我在CMD中使用这个命令来构建可执行文件:
gcc -DMS_WIN64 C:/Users/Siva/Desktop/Scripts/TEST/test.c -IC:/"Program Files"/Python37/include -LC:/"Program Files"/Python37/libs -lpython37 -o output
这会产生以下错误:
C:\Users\Siva\Desktop\Scripts\TEST>gcc -DMS_WIN64 C:/Users/Siva/Desktop/Scripts/TEST/test.c -IC:/"Program Files"/Python37/include -LC:/"Program Files"/Python37/libs -lpython37.a -o output
C:/Users/Siva/Desktop/Scripts/TEST/test.c:213:41: warning: division by zero [-Wdiv-by-zero]
enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
^
C:/Users/Siva/Desktop/Scripts/TEST/test.c:213:12: error: enumerator value for '__pyx_check_sizeof_voidp' is not an integer constant
enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
^~~~~~~~~~~~~~~~~~~~~~~~
我已附上下面的错误屏幕截图。
请参见图片描述。
>>> 1 / 1
输出1.0
。这在PEP 238中被称为“真除法”。而Python 2.x则使用“经典除法”。 - martineauif __name__ == '__main__':
保护;如果不这样做,可能会导致许多问题(例如,对于使用multiprocessing
的任何脚本等原因)。 - ShadowRanger