Python 3.x 使用最小Cython模块的Python崩溃(Python3、Anaconda3、Windows7)
我尝试在Windows7下使用Cython和Python 3(Anaconda3)。通过编辑文件cygwinccompiler.py(cf.)解决distutils中的一个bug后,可以毫无问题地构建模块:Python 3.x 使用最小Cython模块的Python崩溃(Python3、Anaconda3、Windows7),python-3.x,windows-7,cython,anaconda,Python 3.x,Windows 7,Cython,Anaconda,我尝试在Windows7下使用Cython和Python 3(Anaconda3)。通过编辑文件cygwinccompiler.py(cf.)解决distutils中的一个bug后,可以毫无问题地构建模块: C:\path\testcython> python setup.py build running build running build_ext cythoning testcython.pyx to testcython.c building 'testcython' exten
C:\path\testcython> python setup.py build
running build
running build_ext
cythoning testcython.pyx to testcython.c
building 'testcython' extension
C:\Prog\Anaconda3\Scripts\gcc.bat -mdll -O -Wall -IC:\Prog\Anaconda3\include -IC
:\Prog\Anaconda3\include -c testcython.c -o build\temp.win-amd64-3.4\Release\tes
tcython.o
writing build\temp.win-amd64-3.4\Release\testcython.def
C:\Prog\Anaconda3\Scripts\gcc.bat -shared -s build\temp.win-amd64-3.4\Release\te
stcython.o build\temp.win-amd64-3.4\Release\testcython.def -LC:\Prog\Anaconda3\l
ibs -LC:\Prog\Anaconda3\PCbuild\amd64 -lpython34 -lmsvcr100 -o build\lib.win-amd
64-3.4\testcython.pyd
但是,只要.pyx文件中有import或print语句,生成的.pyd文件就会使Python崩溃。例如,如果testcython.pyx包含
def say_hello_to(name):
print('Hello '+name)
它给
In [1]: import testcython # no crash here
In [2]: testcython.say_hello_to('Tom')
Hello Tom
此时会弹出“Python.exe已停止工作”窗口,该窗口已完成
在这种情况下(没有错误日志的崩溃,我想是分段错误),我能做些什么来理解问题
有人知道Cython、Python 3(Anaconda3)在Windows下会发生什么吗
PS:Python 2.7(Anaconda)没有问题
编辑:模块故障处理程序生成的回溯 如果testcython.pyx仅包含:
print('Test print... Will it crash?')
或
或
python崩溃,我得到:
$ python -X faulthandler -c 'import testcython'
Test print... Will it crash?
Fatal Python error: Segmentation fault
Current thread 0x000013e0 (most recent call first):
File "<frozen importlib._bootstrap>", line 321 in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1715 in load_module
File "<frozen importlib._bootstrap>", line 539 in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1161 in _load_backward_compatible
File "<frozen importlib._bootstrap>", line 1191 in _load_unlocked
File "<frozen importlib._bootstrap>", line 2226 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 2237 in _find_and_load
File "<string>", line 1 in <module>
$python-X faulthandler-c'import testcython'
测试打印。。。它会崩溃吗?
致命的Python错误:分段错误
当前线程0x000013e0(最新调用优先):
文件“”,调用中第321行,删除了帧
加载模块中第1715行的文件“”
文件“”,检查包装中的第539行
文件“”,第1161行中的\u加载\u向后\u兼容
文件“”,加载中的第1191行已解锁
文件“”,在“查找”和“加载”中的第2226行已解锁
文件“”,在_find_和_load中的第2237行
文件“”,中的第1行
似乎生成无法链接到适当的库,并且打印(写入终端)导致seg故障
让我们回到构建过程。是否可以使用pip而不是setup.py build
你能在Linux下工作吗:)实际上我通常在Linux下工作。。。不幸的是,有些情况下你必须在关闭的操作系统下工作,比如Mac或Windows。当我问这个问题时,我正处于这种情况。最后,我必须回到Python2.7(使用Anaconda),它没有问题。
import sys
$ python -X faulthandler -c 'import testcython'
Test print... Will it crash?
Fatal Python error: Segmentation fault
Current thread 0x000013e0 (most recent call first):
File "<frozen importlib._bootstrap>", line 321 in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1715 in load_module
File "<frozen importlib._bootstrap>", line 539 in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1161 in _load_backward_compatible
File "<frozen importlib._bootstrap>", line 1191 in _load_unlocked
File "<frozen importlib._bootstrap>", line 2226 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 2237 in _find_and_load
File "<string>", line 1 in <module>