Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用最小Cython模块的Python崩溃(Python3、Anaconda3、Windows7)_Python 3.x_Windows 7_Cython_Anaconda - Fatal编程技术网

Python 3.x 使用最小Cython模块的Python崩溃(Python3、Anaconda3、Windows7)

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

我尝试在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' 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>