2017-07-05 4 views
0

Im Grunde versuche ich etwas Python-Code von savReaderWriter-Modul ausführen, um eine .SAV-Datei zum Öffnen in IBM SPSS zu erstellen. Als macOS Benutzer brauchte ich diese beiden Zeilen im Terminal laufen zunächst für das Modul zu arbeiten:Bibliothek (Dylib) nicht geladen - Bild nicht gefunden - Python IDE

echo 'export DYLD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos' >> ~/.bash_profile 
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bash_profile 

Im Folgenden finden Sie ein Stück Code sehen kann ich in Python laufen bin versucht:

import savReaderWriter 

savFileName = "someFile.sav" 
records = [['Test1', 1, 1], ['Test2', 2, 1]] 
varNames = ['var1', 'v2', 'v3'] 
varTypes = {'var1': 5, 'v2': 0, 'v3': 0} 
with savReaderWriter.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer: 
    for record in records: 
     writer.writerow(record) 

Mein Problem ist, dass beim Ausführen des Codes in Python durch terminal.app funktioniert wie ein Charme und eine neue .sav-Datei erscheint, versucht, den gleichen Code in einer IDE (versuchte PyCharm und Spyder) auszuführen gibt mir einen Fehler:

Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2847, in run_code 
    exec(code_obj, self.user_global_ns, self.user_ns) 
    File "<ipython-input-2-94007b092d47>", line 7, in <module> 
    with savReaderWriter.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer: 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/savWriter.py", line 198, in __init__ 
    super(Header, self).__init__(savFileName, ioUtf8, ioLocale) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/generic.py", line 29, in __init__ 
    self.spssio = self.loadLibrary() 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/generic.py", line 117, in loadLibrary 
    spssio = self._loadLibs("macos") 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/generic.py", line 89, in _loadLibs 
    return [load(os.path.join(path, lib)) for lib in libs][-1] 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/generic.py", line 89, in <listcomp> 
    return [load(os.path.join(path, lib)) for lib in libs][-1] 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 348, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: dlopen(/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libicuuc48.1.dylib, 6): Library not loaded: @executable_path/../lib/libicudata48.1.dylib 
    Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libicuuc48.1.dylib 
    Reason: image not found 

Der Modulautor konnte mir diesbezüglich nicht weiterhelfen, daher würde ich mich über Anregungen aus dieser Community sehr freuen.

EDIT (hinzugefügt sys.path):

Vom Terminal:

['', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', 
'/Users/mg/mne-python'] 

Von IDE:

['/Applications/PyCharm.app/Contents/helpers/pydev', 
'/Users/mg/Documents/Python/Projects/MD', 
'/Applications/PyCharm.app/Contents/helpers/pydev', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', 
'/Users/mg/mne-python', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/extensions', 
'/Users/mg/Documents/Python/Projects/MD'] 

Grüße,

MG

Antwort

0

Die Lösung gefunden!

Grundsätzlich brauchte ich symbiotische Verbindungen zu jedem dylib zu schaffen, in dem Fehler erschien, Beispiele unter:

sudo ln -s /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libicudata48.1.dylib /usr/local/lib/libicudata48.1.dylib 
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libicui18n48.1.dylib /usr/local/lib/libicui18n48.1.dylib 
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libspssdio.dylib /usr/local/lib/libspssdio.dylib 
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos/libzlib123spss.dylib /usr/local/lib/libzlib123spss.dylib 

So theoretisch:

sudo ln -s /path/to/original /path/to/symbiotic/link 

Grüße,

MG

0

Ich bin nicht ein Mac-Mensch, aber verwendest du wirklich Python 3.6? Unterstützt der savReaderWriter diese Version? Ich bezweifle, dass das I/O-Modul, das es verwendet, für diese Version gebaut wird.

Wenn dies über Terminal, aber nicht über eine IDE funktioniert, überprüfen Sie, ob die Python-Suchpfade identisch sind.

+0

Obwohl es v3.6 nicht unterstützt, funktioniert es für mich ok (zumindest im Terminal). Alle Suchpfade, die im Terminal erscheinen, erscheinen auch in der IDE. –

+0

In der gleichen Reihenfolge? Seltsam. – JKP

+0

Hinzugefügt sys.path-Ausgabe –

Verwandte Themen