cython setup.py импорт numpy завершается неудачно - PullRequest
1 голос
/ 03 июля 2019

Импорт numpy в моем файле setup.py завершается неудачно с сообщением об ошибке:

File "setup.py", line 17, in <module>
    import numpy
  File "C:\Users\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>
    from . import _distributor_init
  File "C:\Users\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in <module>
    from . import _mklinit
ImportError: DLL load failed: The specified module could not be found.

Кажется, что он специфичен для numpy.Импорт, например, os работает нормально.Или когда я пытаюсь импортировать pandas ошибка говорит ImportError: Missing required dependencies ['numpy'].

Здесь установочный файл

try:
    from setuptools import setup
    from setuptools import Extension
except ImportError:
    from distutils.core import setup
    from distutils.extension import Extension

from Cython.Distutils import build_ext
import numpy 

ext_modules = [Extension('helloworld',
                         ['helloworld.pyx'])]

setup(cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules)

и файл .pyx

print('Hello World')

(импорт numpy в сценарии .py работает очень хорошо.) Яна Windows 10 с использованием новейшего дистрибутива Anaconda 3.7 с numpy версией 1.16.2 и cython версии 0.29.6.Для компиляции файлов c я использую компилятор, включенный в Visual Studio Community 2019.

Полагаю, это не так уж и много, но я безуспешно искал в Интернете целый день.Буду признателен за любую оказанную помощь.

РЕДАКТИРОВАТЬ дополнительная информация: Я установил более старую версию дистрибутива Anaconda (Anaconda3-5.3.1-Windows-x86_64.exe), но столкнулся с той же проблемой

C:\Users\Documents\cython>python setup.py build_ext --inplace
Traceback (most recent call last):
  File "C:\Users\Anaconda3\lib\site-packages\numpy\core\__init__.py", line 16, in <module>
    from . import multiarray
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    import numpy
  File "C:\Users\Anaconda3\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File "C:\Users\Anaconda3\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Users\Anaconda3\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Users\Anaconda3\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Users\Anaconda3\lib\site-packages\numpy\core\__init__.py", line 26, in <module>
    raise ImportError(msg)
ImportError:
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control).  Otherwise reinstall numpy.

EDIT2 Обходной путь: я импортирую numpy, потому что в конечном итоге я хочу использовать его функциональность в файле .pyx.Для этого обычно нужно добавить include_dirs=[numpy.get_include()] в Extension() в файле setup.py.Если я просто не импортирую numpy и вручную передам строку, которую я получу, вызвав numpy.get_include(), то все будет работать.Но, конечно, это не так, как должно быть.

...