2015-09-21 7 views
6

У меня возникли проблемы с компиляцией exe при использовании cx_freeze и scipy. В частности, мой скрипт используетScipy и CX_freeze - Ошибка импорта scipy: вы не можете импортировать scipy, находясь в scipy каталоге источника

from scipy.interpolate import griddata 

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

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module> 
    exec(code, m.__dict__) 
    File "gis_helper.py", line 13, in <module> 
    File "C:\Python27\lib\site-packages\scipy\__init__.py", line 103, in <module> 
    raise ImportError(msg) 
ImportError: Error importing scipy: you cannot import scipy while 
     being in scipy source directory; please exit the scipy source 
     tree first, and relaunch your python intepreter. 

После просмотра SciPy \ _init__.py файл, есть следующее:

if __SCIPY_SETUP__: 
    import sys as _sys 
    _sys.stderr.write('Running from scipy source directory.\n') 
    del _sys 
else: 
    try: 
     from scipy.__config__ import show as show_config 
    except ImportError: 
     msg = """Error importing scipy: you cannot import scipy while 
     being in scipy source directory; please exit the scipy source 
     tree first, and relaunch your python intepreter.""" 
     raise ImportError(msg) 

Я не совсем уверен, что проблема здесь, однако, хотя, кажется, что erros выбрасывают потому что есть проблема с scipy конфигурационным файлом. Возможно, он не включен в процесс сборки. Я довольно новичок и надеюсь, что кто-то более опытный в создании сборки с использованием cxfreeze может пролить свет на это.

Между прочим, используемый scipy был установлен из двоичных файлов here.

ответ

10

У меня была та же проблема. Я добавил этот код setup.py генерируемой cx_freeze:

import scipy 
includefiles_list=[] 
scipy_path = dirname(scipy.__file__) 
includefiles_list.append(scipy_path) 

Затем используется includefiles_list как часть параметра build_exe:

build_options = dict(packages=[], include_files=includefiles_list) 

setup(name="foo", options=dict(build_exe=build_options)) 
+0

Спасибо, что сделал работу, к сожалению, теперь она перешла на другие ошибки. Сфокусироваться на pyinstaller пока, но спасибо за вашу помощь. – Praxis

+0

У меня такая же проблема. Все жестко, когда я тестирую свой код, я получаю следующее сообщение: «ИмпортError: Нет модуля с именем« C: \\ *** \\ *** \\ Python27 \\ lib \\ site-packages \\ scipy' – Poonuts

+0

У меня есть такой же проблема. Может ли кто-то разрешить это? – CarMoreno

0

я добавить такую ​​же проблему и решить ее с помощью fepzzz метод и в том числе некоторые недостающие пакеты:

additional_mods = ['numpy.matlib', 'multiprocessing.process'] 
includefiles = [(r'C:\Anaconda3\Lib\site-packages\scipy')] 

setup(xxx, options={'build_exe': {'includes': additional_mods, 'include_files': includefiles}}) 

И используя версия 5.0.2 пакета ого-Фриз, который решаемые ошибку при импорте multiprocessing.process

Смежные вопросы