Я пишу программу Python в Anaconda/Spyder на 64-битной машине Windows 8. Я получаю все проблемы с gcc.bat («gcc.bat» не удалось с статусом выхода 1 »), и я исправил его - почти. Мой файл дарохранительница (так называемый testFunc.pyx
) имеет следующий код:Cython import работает один раз - и затем дает ошибку gcc.bat
import numpy as np
cimport numpy as np
def funcMatUtility(np.ndarray[np.float64_t, ndim=1] vecX,
np.ndarray[np.float64_t, ndim=1] vecE):
cdef np.ndarray[np.float64_t, ndim=2] out = \
np.zeros((len(vecX),len(vecE)),dtype=np.float64)
for iX, valX in enumerate(vecX):
for iE, valE in enumerate(vecE):
out[iX,iE] = valX + valE
return out
Я называю эту функцию, выполнив следующую py
файл в Spyder:
import os
import numpy as np
import pyximport
os.environ['CPATH'] = np.get_include()
mingw_setup_args = { 'options': { 'build_ext': { 'compiler': 'mingw32' } } }
pyximport.install(setup_args=mingw_setup_args)
import testFunc
x = testFunc.funcMatUtility(np.array([0.0,1.0,2.0]),np.array([0.0,1.0,2.0,3.0]))
Без линии os.environ['CPATH'] = np.get_include()
я получаю ошибку gcc.bat сообщение сразу. Без параметров настройки в install()
Я получаю еще одно сообщение об ошибке: Unable to find vcvarsall.bat
.
Итак, с этими строками я могу скомпилировать свой код Cython, который предполагает, что это то, что мне нужно было для запуска компилятора на моей машине с Windows в первую очередь. Проблема, однако, в том, что я могу сделать это только один раз. Если вы хотите импортировать его снова, например, потому что я все еще разрабатываю свой код, и я только выполнил пробный запуск, я снова получаю сообщение об ошибке gcc.bat (gcc.bat failed with exit status 1
), если я не закрою и не открою Spyder. Я попробовал второй импорт только с оператором import
(т. Е. Не импортировал pyximport
), но безрезультатно. Что может быть причиной того, что я могу только скомпилировать код Cython?