|
Autor |
Python Error beim Import einer DLL |
|
Wolti
Aktiv  Dabei seit: 17.05.2004 Mitteilungen: 110
Wohnort: Rhede, Deutschland
 | Themenstart: 2023-01-24
|
Hallo zusammen.
Ich schreibe gerade ein CMake build script für eine C++ Bibliothek (hier), welche auch Python-Bindings bereitstellt (hier). Das Erstellen vom C++ Code funktioniert unter Windows und Linux, alle Tests und Beispiele laufen.
Während unter Linux die Python Beispiele und Jupyter Notebooks auch problemlos laufen, bekomme ich unter Windows folgende Fehlermeldung:
\sourceon
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[3], line 2
1 # first, we need to import our essentia module. It is aptly named 'essentia'!
----> 2 import essentia
4 # there are two operating modes in essentia which (mostly) have the same algorithms
5 # they are accessible via two submodules:
6 import essentia.standard
File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\essentia\__init__.py:1
----> 1 from . import _essentia
2 import sys as _sys
3 from ._essentia import reset
ImportError: cannot import name '_essentia' from partially initialized module 'essentia' (most likely due to a circular import) (C:\Users\Christian\AppData\Local\Programs\Python\Python310\lib\site-packages\essentia\__init__.py)
\sourceoff
Das Binary im Python Paket heißt unter Linux _essentia.cpython-310-x86_64-linux-gnu.so, unter Windows habe ich die Datei einfach _essentia.dll genannt.
Ich kenne mich mit Python nicht wirklich aus, vermute aber, dass ich den Fehler eher im Python Paket-Code als im C++ Code suchen muss. Den Code für das Windows Paket habe ich komplett vom Linux Paket (hier das wheel) übernommen, nur das Binary ausgetauscht. Gibt es unter Windows irgendwelche Besonderheiten zu beachten?
Vielleicht hat hier ja jemand eine Idee...
Gruß, Christian
|
Profil
|
Wolti
Aktiv  Dabei seit: 17.05.2004 Mitteilungen: 110
Wohnort: Rhede, Deutschland
 | Beitrag No.1, vom Themenstarter, eingetragen 2023-01-24
|
Nach umbenennen von *.dll zu *.pyd (die DLL ist ein Python-Modul mit PyInit__essentia) und
\sourceon python
import os
os.add_dll_directory('C:\\Pfad-zu-Dependencies')
\sourceoff
gib es zwar keine Fehlermeldung mehr, aber der Python-Kernel verabschiedet sich. Scheint also auf der C++ Seite noch etwas schief zu laufen...
|
Profil
|
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|