2015-01-29 19 views
5

Ich habe Probleme beim Ausführen eines Python-Skripts auf meiner Windows 7-Plattform. Ich habe Python und auch Cairo installiert, zuletzt mit "pip". Ich bin mit dem Skript diesem Befehl:Python: OSError: Laden der Bibliothek nicht möglich libcairo.so.2

C:\Python34>python.exe label/make_label.py 

und ich erhalte die folgende Fehlermeldung:

Traceback (most recent call last): 
    File "label/make_label.py", line 6, in <module> 
    import cairocffi as cairo 
    File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 41, in <modul 
e> 
    cairo = dlopen(ffi, *CAIRO_NAMES) 
    File "C:\Python34\lib\site-packages\cairocffi\__init__.py", line 34, in dlopen 

    return ffi.dlopen(names[0]) # pragma: no cover 
    File "C:\Python34\lib\site-packages\cffi\api.py", line 118, in dlopen 
    lib, function_cache = _make_ffi_library(self, name, flags) 
    File "C:\Python34\lib\site-packages\cffi\api.py", line 411, in _make_ffi_libra 
ry 
    backendlib = _load_backend_lib(backend, libname, flags) 
    File "C:\Python34\lib\site-packages\cffi\api.py", line 400, in _load_backend_l 
ib 
    return backend.load_library(name, flags) 
OSError: cannot load library libcairo.so.2: error 0x7e 

Was ich bereits getan habe ist folgendes:

  • Hinzugefügt wurde die PATH zu GTK/bin in der Umgebungsvariablen
  • Ich überprüfe den Ordner GTK/bin und fand "libcairo-2.dll", also habe ich ihn in libcairo.so
  • umbenannt

Ich weiß nicht, welche anderen Informationen zur Lösung dieses Problems nützlich sein könnten, aber lassen Sie es mich wissen und ich werde versuchen, es hinzuzufügen.

+0

Sie müssen sicherstellen, Windows (und Python) c Finden Sie libcairo-2.dll. Ich bezweifle, dass Windows/Python automatisch in GTK/bin sucht. Ich bin mir auch nicht sicher, ob das Umbenennen der DLL-Datei zu einer so Erweiterung eine gute Sache ist. – Evert

+0

Nun, was ich getan habe, war die Position von libcairo.dll (und auch libcairo.so) zum PATH von Umgebungsvariablen hinzuzufügen. Ich habe angenommen, dass es versucht, diesen Ort zu überprüfen. Wie sonst kann ich Python in die richtige Richtung weisen? – Niddro

Antwort

1

Es scheint so, als ob cairo eine gemeinsam genutzte Bibliothek benötigt, die nicht in der Standardsuchbibliothek enthalten ist. Der Python ruft jedoch dlopen auf, um die Bibliothek dynamisch zu laden, so dass Sie libcairo.so.2 einfügen können. Stellen Sie dann sicher, dass die Referenz im selben Verzeichnis im Arbeitsverzeichnis gefunden wird. Sie können auch pkg-config zum Festlegen der Umgebung verwenden. siehe hier http://people.freedesktop.org/~dbn/pkg-config-guide.html

+0

Sie sind in der Tat richtig. Wenn Sie die Datei libcairo.so in das Arbeitsverzeichnis einfügen, könnte das Skript weiter gehen. Allerdings fing es an, nach weiteren lib-Dateien zu fragen, so dass ich den ganzen Ordner dort hinschmeißen musste, um nicht genau herauszufinden, welche benötigt wurden. – Niddro

1

Ich hatte gerade das gleiche Problem ("OSError: kann nicht geladen Bibliothek libcairo.so.2: error 0x7e"), und das ist, wie ich das Problem gelöst, unter Windows (Windows 7 x64, Python 3.4.2 x86 (MSC v.1600 32 bit)):

  • heruntergeladen ein all-in-one bundle der GTK + Stapel mit 3rd-Party-Abhängigkeiten (die libcairo-2.dll und andere Kairo bezogene Bibliotheken enthalten)
  • extrahiert dieses Archiv zu einem Pfad, der KEINE Leerzeichen enthält (z.B. C:\Programs\gtk+)
  • hinzugefügt der des extrahierten Verzeichnis bin Unterverzeichnis (die die libcairo-2.dll und andere notwendige Dateien) zur PATH erwähnt enthält
    • Win + R, SystemPropertiesAdvanced
    • Umwelt Variablen ...
    • hinzugefügt dieses Verzeichnis zu der Path-Variable (entweder zu den Benutzervariablen oder Systemvariablen, nach einem Semikolon) (z....;C:\foo;C:\Programs\gtk+)
    • OK
  • pip install cairosvg
  • getestet es mit einem sehr einfachen Code, der bereits gearbeitet hatte:
import cairosvg 
testsvg = '<svg height="30" width="30">\ 
    <text y="10">123</text>\ 
    </svg>' 
svgConvertedToPng = cairosvg.svg2png(bytestring=testsvg) 
print(svgConvertedToPng) 
2

Unter Mac OS X homebrew mit:

brew install cairo 
brew install pango 
Verwandte Themen