Numpy Pyinstaller ImportError: cannot import name multiarray
Bin ich der Begegnung mit einem ähnlichen problem berichtet hier, das scheint zu sein, eine ungelöste Frage.
Nach dem kompilieren eine exe-Datei, eine pyinstaller bauen, wirft die folgende Fehlermeldung, die wahrscheinlich verursacht durch die numpy\core\ init.py
Gibt es einige Vorschläge, dass es hat zu tun mit widersprüchlichen numpy-Installationen habe ich jedoch deinstalliert und neu installiert mehrere Male, und suchte für alle anderen Anlagen ohne Glück.
Derzeit laufen mit numpy-1.9+MKL-Binärdateien.
Habe ich auch gekennzeichnet, die multiarray.pyd-Datei in der spec-Datei als binary zu packen. Kein Glück.
Keine Ahnung, was die Ursache dieses, wie ich bin nicht besonders vertraut mit der init-Datei-Struktur. Irgendeine Idee, wie man diese importiert werden?
Traceback des Fehlers:
Traceback (most recent call last):
File "<string>", line 50, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\mpl_toolkits.basemap", line 15, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib", line 133, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib.rcsetup", line 19, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\matplotlib.colors", line 52, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy", line 200, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.add_newdocs", line 13, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.lib", line 8, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.lib.type_check", line 11, in <module>
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "C:\Users\Hp\PycharmProjects\GISdev\build\gis_helper2\out00-PYZ.pyz\numpy.core", line 14, in <module>
ImportError: cannot import name multiarray
Mögliche Ursache des Problems stammt aus der init-Datei:
from __future__ import division, absolute_import, print_function
from .info import __doc__
from numpy.version import version as __version__
# disables OpenBLAS affinity setting of the main thread that limits
# python threads or processes to one core
import os
envbak = os.environ.copy()
if 'OPENBLAS_MAIN_FREE' not in os.environ:
os.environ['OPENBLAS_MAIN_FREE'] = '1'
if 'GOTOBLAS_MAIN_FREE' not in os.environ:
os.environ['GOTOBLAS_MAIN_FREE'] = '1'
from . import multiarray
os.environ.clear()
os.environ.update(envbak)
del envbak
del os
from . import umath
from . import _internal # for freeze programs
from . import numerictypes as nt
multiarray.set_typeDict(nt.sctypeDict)
Einige Dinge, die Sie hinzufügen könnte, um die Frage zu stellen Diagnose ein bisschen schneller: post den Inhalt
.spec
- Datei für das Projekt (d.h. in das Verzeichnis, wo Sie laufen pyinstaller
haben, müssen Sie eine Datei namens GISdev.spec
oder ähnliches. Versuchen Sie, mit --onedir
- Modus - siehe hier für details. Ich erinnere mich, Suche nach einem nicht-verpackt Stück eine Bibliothek über, die Strecke einmal...OK - ich habe einige Zeit auf dieser. Ich habe gerade ein clean install von
pyinstaller
auf Windows (ausgegangen von Ihrem Pfad, name) und eine minimale Datei, die aus import numpy as np
gefolgt von print numpy.__version__
. Dies Alles Nur Gearbeitet™. Früher habe ich Python 2.7 (wieder davon ausgegangen, von Ihrem Pfade) und numpy 1.9. Können Sie eine minimal-version von Ihr python-code um, wo es nicht klappt - schauen Sie unter stackoverflow.com/help/mcve für Hilfe, wie man eine minimal-Fall, scheitert in der Weise, die Sie beschreiben.Sorry, ich habe nicht viel Zeit an diesem Abend. Eine weitere Frage - Sie die exe-Datei aus dem
dist
Verzeichnis nicht build
, richtig? Wenn nicht - das könnte das problem sein (obwohl ich würde erwarten, dass es scheitern früher mit "nicht finden können-Win32" oder ähnlich. Wenn das ist nicht das problem - Sie könnten versuchen, ein pip uninstall
- und re-installieren, das ist eine nützliche Sache, zu beseitigen mindestens.Gerne helfen - wollen Sie schreiben, eine Antwort, oder soll ich? Ich Hinweis Sie sagen "(meistens)". Ich hoffe, Sie arbeitete die letzten Ecken. Wenn das problem ist, dass Sie jetzt nicht auch einige Binärdateien, die Sie wollen - posten Sie Ihre
.spec
- Datei, und wir können daran arbeiten es aus. a.binaries
ist ein Mitglied der Analysis
Objekt, sondern eine Datei. Vielleicht möchten Sie sich an pythonhosted.org/PyInstaller/#adding-files-to-the-bundle. Es ist eine gute Idee, immer nach der .spec
mit pyinstaller Fragen wie ich oben sagte - sonst
InformationsquelleAutor Praxis | 2015-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einem Austausch in den Kommentaren, das problem isoliert wurde, um ein problem in einem benutzerdefinierten
.spec
Datei, die von der OP. In der.spec
eine Zeile so etwas wie:ersetzt worden mit
zu versuchen, die Einführung einer Datei
a.binaries1
zu aktivieren pyinstaller, um einige benutzerdefinierte.dll
binaries.Im Gesicht
a.binaries
ist ein Mitglied derAnalysis
Objekt-und muss bleiben - der Weg ist das hinzufügen eines zusätzlichen binären gile in der collect Zeile wie diese (nach den docs). Hinweis: Sie können ändern Sie den Namen der Datei in Ihrer distribution (falls nötig) durch die änderung das erste Element der Tupel.hi @java_mouse - haben Sie einen Blick auf diesem Abschnitt der Dokumente : pythonhosted.org/PyInstaller/#using-spec-files . Standardmäßig seine im aktuellen Verzeichnis, es sei denn, Sie haben die Möglichkeit dort diskutiert. Diesen Abschnitt gibt auch viele Informationen auf, wie man anpassen.
Pfad zu den .spec-Datei?
hi @NirAvJaIn. Gemäß dem Kommentar oben. Es ist in der Regel in das aktuelle Verzeichnis. Die verlinkten Dokumentation wird erläutert, andere Optionen.
InformationsquelleAutor J Richard Snape
Ich bin mit Pycharm IDE und Anaconda auf 64-bit-Windows 10.
Habe ich das problem lösen, indem Sie die folgenden Sequenzen:
In deinem Fall, ich nehme an, Sie könnten installieren Sie numpy nach dem löschen der Dateien in den Ordner C:\Python27\Lib\site-packages\PyInstaller\loader\
InformationsquelleAutor Xin Wang