Пакет программного обеспечения в Python с использованием py2exe с 'libiomp5md.dll' не найден

У меня Python 2.7 на ОС Windows 7. Я хочу упаковать файл project.py в исполняемый файл с помощью py2exe. Следуя инструкции, я написал файл setup.py

from distutils.core import setup
import py2exe

setup(console=["project.py"])  

и я получил это сообщение

enter image description here

Я попытался исключить ' libiomp5md.dll'

from distutils.core import setup
import py2exe

setup(console=["SegmentationAccuracy.py"])

dll_excludes = ['libiomp5md.dll']

но всегда я получаю такое же сообщение об ошибке ": libiomo5md.dll: Нет такого файла или каталога"

мой исполняемый файл содержит:

import math
import os
import numpy as np
import sys
import ogr
from progressbar import ProgressBar
from shapely.geometry import Polygon
nan = np.nan

Ответы

Ответ 1

У меня была та же проблема, но вызов import numpy внутри setup.py разрешил проблему

Ответ 2

libiomp5md.dll является компилятором Intel C и используется для операций OpenMP многопроцессорности. Я ожидаю, что ваш код включает numpy или код, скомпилированный с помощью компилятора Intel, и поэтому ваша конструкция py2exe зависит от этого.

Вы не можете просто создать сборку без нее, поэтому я бы предложил найти ее в вашей системе и скопировать ее в каталог, в котором вы запускаете python setup.py py2exe. Подсказка: у меня есть копия в C:\Python27\Lib\site-packages\numpy\core

[Если вы действительно хотите его исключить, вам придется скомпилировать numpy вручную с помощью Visual Studio или Msys.]

Как только у вас есть libiomp5md.dll в каталоге, который выполняется python setup.py py2exe, вам нужно удалить строку exclude_dll (так как вы не хотите ее исключать...)

from distutils.core import setup
import py2exe

setup(console=["SegmentationAccuracy.py"])

Ответ 3

У меня была та же проблема. Я должен был установить numpy на машине, сделал это с mingw gcc-компилятором. Я подтвердил: копия dll, найденная в C:\Python27\Lib\site-packages\numpy\core\

Я только что скопировал его в рабочий каталог перед запуском установки.

Ничего особенного в настройке setup.py, зависимости автоматически обнаруживаются.

Ответ 4

Хорошо, у меня была та же проблема. Оказалось, что файл .pyd в sklearn ссылался на libiomp5md.dll. Py2exe выглядит в двух местах для вашей DLL - в переменной окружения пути и в том же каталоге, в котором находится файл .pyd. Libiomp5md.dll не находится ни в одном. Py2exe в значительной степени сдается и вместо того, чтобы указывать полное имя пути, такое как c:\Python27\lib\site-packages\numpy\core\libiomp5md.dll, он говорит "libiomp5md.dll", который впоследствии не может найти.

Я нетерпелив. Я добавил строку в свой файл установки:

os.environ [ "PATH" ] + = os.pathsep + os.path.dirname(numpy.core. файл)

и что там, где libiomp5md.dll. Теперь все работает. Просто убедитесь, что вы делаете это в своем коде до вызова настройки, и он будет для вас тоже.