RDFlib installieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hallo *,

ich sitze hinter nem Python 2.6 in Win XP (...) und möchte eigentlich ein bißchen mit der RDFlib herumexperimentieren. Leider funktioniert weder build noch install.
running build_ext
building 'rdflib.sparql.bison.SPARQLParserc' extension
error: Unable to find vcvarsall.bat
Erst konnte ich damit gar nichts anfangen, aber nach ein wenig Recherche darauf gekommen, dass Teile der RDFlib wohl in C geschrieben sind und in Python einkompiliert werden müssen. Soweit richtig? :wink:

Also mal eben schnell und schweren Herzens die Microsoft Visual Studio 9.0 Express Edition installiert. Der Fehler verschwindet, ich bekomme beim build jedoch einen Haufen neuer Fehlermeldungen:
C:\> setup.py install
running install
running bdist_egg
running egg_info
writing rdflib.egg-info\PKG-INFO
writing top-level names to rdflib.egg-info\top_level.txt
writing dependency_links to rdflib.egg-info\dependency_links.txt
writing entry points to rdflib.egg-info\entry_points.txt
reading manifest file 'rdflib.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'example.py'
writing manifest file 'rdflib.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
running build_ext
building 'rdflib.sparql.bison.SPARQLParserc' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python26\include -IC:\Python26\PC /Tcsrc/bison/SPARQLParser.c /Fobuild\temp.win32-2.6\Release\src/bison/SPARQLParser.obj
SPARQLParser.c

src/bison/SPARQLParser.c(42) : warning C4005: 'PREFIX': Makro-Neudefinition
c:\python26\include\pyconfig.h(77): Siehe vorherige Definition von 'PREFIX'
src/bison/SPARQLParser.c(3307) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck

c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(3307) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(3308) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(3308) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(3309) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(3326) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck

c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(3326) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(3327) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(3327) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(3328) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6200) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck
c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(6200) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6201) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6201) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(6202) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6219) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck

c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(6219) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6220) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(6220) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(6221) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9074) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck

c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(9074) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9075) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9075) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(9076) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9093) : error C2275: 'PyObject': Ungültige Verwendung dieses Typs als Ausdruck

c:\python26\include\object.h(108): Siehe Deklaration von 'PyObject'
src/bison/SPARQLParser.c(9093) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9094) : error C2065: 'mList': nichtdeklarierter Bezeichner
src/bison/SPARQLParser.c(9094) : warning C4047: '=': Anzahl der Dereferenzierungen bei 'PyObject *' und 'int' unterschiedlich
src/bison/SPARQLParser.c(9095) : error C2065: 'mList': nichtdeklarierter Bezeichner
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2
Und an dieser Stelle kenn ich mich gar nicht aus (null!) und leider haben mir die Quellen im Netz nicht verraten, was ich jetzt mache.

Ist jemandem von Euch dieses Problem vertraut und hätte dieser jemand vielleicht ein paar Hinweise, wie ich das Problem löse?

Danke und nen schönen Tag!
Fabian
Zuletzt geändert von fäb am Donnerstag 24. September 2009, 09:18, insgesamt 2-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Kann sein, dass Visual C++ diesen C-Code nicht versteht (sieht aber dennoch komisch aus). Hast du es mal mit MinGW versucht?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hallo Leonidas, tip top danke! Das war's! Habe MinGW installiert, PATH ergänzt, den build mit "python setup.py build --compiler=mingw32" gebaut und installiert.

Klappt auch alles ganz wunderbar (yippie!), der Output endet mit:
creating build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
writing build\bdist.win32\egg\EGG-INFO\native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\rdflib-2.4.1-py2.6-win32.egg' and adding 'build\bdist.win32\egg'
to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing rdflib-2.4.1-py2.6-win32.egg
Copying rdflib-2.4.1-py2.6-win32.egg to c:\python26\lib\site-packages
Adding rdflib 2.4.1 to easy-install.pth file
Installing rdfpipe-script.py script to c:\python26\Scripts
Installing rdfpipe.exe script to c:\python26\Scripts

Installed c:\python26\lib\site-packages\rdflib-2.4.1-py2.6-win32.egg
Processing dependencies for rdflib==2.4.1
Finished processing dependencies for rdflib==2.4.1
Jetzt mal eben getestet á la

Code: Alles auswählen

import rdflib
Das klappt, aber:

Code: Alles auswählen

from rdflib import Graph
g = Graph()
nicht:
ImportError: cannot import name Graph
Dabei bin ich mir sicher, dass "Graph" existiert.
Hast Du oder jemand anders eine Idee? Ich mache doch bestimmt noch was ganz Grundlegendes falsch, oder?

1000 Dank!
Fabian
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mach mal ein ``print dir(rdflib)`` um zu sehen was da überhaupt so drin ist. Du kannst auch nochmal nachsehen, was da für ``.pyd``-Dateien kompiliert wurden. Ich habe mit rdflib selbst keine Erfahrung, daher weiß ich nicht wie die sich verhält.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hi, also:

Code: Alles auswählen

import rdflib
print dir(rdflib)
ergibt folgenden Output:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'rdflib']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'rdflib']
Großes Fragezeichen...

Und *.pyds wurden nicht erstellt, soweit ich das sehe.

Müsste denn in "Python26\Lib" etwas auftauchen?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dann solltest du mal

Code: Alles auswählen

from rdflib.rdflib import Graph
g = Graph()
ausprobieren.

Oder mal ein

Code: Alles auswählen

print dir(rdflib.rdflib)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Das sieht für mich irgendwie nach einer fehlerhaften Installation aus. Ich habe es bei mir eben installiert, dort hatte ich keine Probleme mit "from rdflib import Graph". Du könntest mal ein

Code: Alles auswählen

from rdflib.rdflib import Graph
versuchen. Sollte aber wenn nur eine vorübergehende Lösung sein.

Edit: War auch wieder mal an der Zeit ^^
cofi hat geschrieben:Edit: Timing ist alles ... :roll:
Das Leben ist wie ein Tennisball.
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hallo cofi & EyDu,

danke vielmals für Eure Antworten.

auch die rdflib.rdflib-Variante funktioniert bei mir nicht, sondern schmeisst nen
ImportError: No module named rdflib
Ich glaube, ich habe bei der Installation wider besseren Wissens irgendetwas ganz Wichtiges vergessen (bestimmt auch, weil ich das mit dem egg-File nicht wirklich durchschaue).

Könnte jemand von Euch so nett sein und mir ganz kurz und listenartig beschreiben, wie er vorgegangen ist? Sonst finde ich den Fehler womöglich nie.

Danke und Sorry für all diese DAU-Fragen ;)

Fabian
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

fäb hat geschrieben:Müsste denn in "Python26\Lib" etwas auftauchen?
Also in ``site-packages`` müsste da eigentlich einiges zum Thema rdflib drin sein, kannst du mal die Dateien die im rdflib-Ordner drin sind posten?
fäb hat geschrieben:Könnte jemand von Euch so nett sein und mir ganz kurz und listenartig beschreiben, wie er vorgegangen ist? Sonst finde ich den Fehler womöglich nie.
So wie ich cofi und EyDu einschätze haben sie einfach das Paketmanagement ihres Linux-Systems benutzt ;) Oder eben easy_install auf Linux, wo sowas eigentlich auch nie Probleme macht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Gern:
[[django]]
[[MySQL-python-1.2.2]]
[[MySQLdb]]
[[pygame]]
README.txt
Django-1.0.2_final-py2.6.egg-info
pygame-1.9.1-py2.6.egg-info
setuptools-0.6c9-py2.6.egg
setuptools.pth
easy-install.pth
rdflib-2.4.1-py2.6-win32.egg
Außer der egg-Datei leider gar nichts hinsichtlich RDFlib ... :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann schau mal was in der Egg-Datei drin ist (Egg-Dateien sind eigentlich nur umbenannte ZIP-Dateien, genauso wie JAR-Dateien bei Java).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hallo Leonidas, danke für Deine Antwort.

OK, das mit den egg-Dateien hab ich nicht gewusst. Hab die egg mal mit 7zip geöffnet und da drin sind:
[[EGG-INFO]]
[[rdflib]]
[[rdflib_tools]]
[[test]]
Und da drin sind die Dateien, die ich erwartet habe, nämlich z.B. in /rdflib/
Graph.py
Graph.pyc
Literal.py
Literal.pyc
OK, dann passt das. Aber was passt nicht?

Noch einmal mein Procedere:

1. MinGW installiert
2. build mit "python setup.py build --compiler=mingw32" gebaut
3. installiert mit "python setup.py install":
Copying rdflib-2.4.1-py2.6-win32.egg to c:\python26\lib\site-packages
Adding rdflib 2.4.1 to easy-install.pth file
Installing rdfpipe-script.py script to c:\python26\Scripts
Installing rdfpipe.exe script to c:\python26\Scripts
Installed c:\python26\lib\site-packages\rdflib-2.4.1-py2.6-win32.egg
Processing dependencies for rdflib==2.4.1
Finished processing dependencies for rdflib==2.4.1
Muss denn easy_install nochmal ausgeführt werden vielleicht?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Lösch mal im entpackten Source-Ordner den ``build/`` Ordner und kompiliere nochmal. Ich finde es sehr seltsam, dass er zwar MinGW zu benötigen scheint, aber keine ``.pyd``-Dateien generiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Hallo Leonidas, okay, ich habe nochmal gebaut:
C:\Python26\rdflib-2.4.1>python setup.py build --compiler=mingw32

running build
running build_py
running build_ext
building 'rdflib.sparql.bison.SPARQLParserc' extension
creating build\temp.win32-2.6
creating build\temp.win32-2.6\Release
creating build\temp.win32-2.6\Release\src
creating build\temp.win32-2.6\Release\src\bison
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python26\include -Ic:\python26\PC -c src/bison/SPARQLParser.c -o build\temp.win32-2.6\Release\src\bison\sparqlparser.o
src/bison/SPARQLParser.c:42:1: warning: "PREFIX" redefined
In file included from c:/python26/include/Python.h:8,
from src/bison/SPARQLParser.c:7:
c:/python26/include/pyconfig.h:77:1: warning: this is the location of the previous definition
writing build\temp.win32-2.6\Release\src\bison\SPARQLParserc.def
C:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\bison\sparqlparser.o build\temp.win32-2.6\Release\src\bison\SPARQLParserc.def -Lc:\python26\libs -Lc:\python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\rdflib\sparql\bison\SPARQLParserc.pyd

C:\Python26\rdflib-2.4.1>
Ergebnis: ein neues build-Verzeichnis mit den 2 Verzeichnissen lib.win32-2.6 und temp.win32-2.6

Die einzige pyd-Datei ist jetzt unter
lib.win32-2.6\rdflib\sparql\bison\SPARQLParserc.pyd
zu finden. Sonst durch die Bank py-Dateien.

Bis hierhin alles gut?

PS: Danke für Deine Geduld mit mir.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

fäb hat geschrieben:Bis hierhin alles gut?
Das solltest du uns sagen koennen. Teste es doch einfach.
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Das ist allerdings wahr :D

Nach einem setup.py install befindet sich die egg-Datei unter
C:\Python26\Lib\site-packages\rdflib-2.4.1-py2.6-win32.egg
Die kompilierte SPARQLParserc.pyd befindet sich darin unter
\rdflib\sparql\bison\
Meine Testdatei schmeisst aber leider wieder ImportError...

EDIT: Output von install (Auszug vom Ende)
[...]
byte-compiling build\bdist.win32\egg\test\sparql\__init__.py to __init__.pyc
creating stub loader for rdflib\sparql\bison\SPARQLParserc.pyd
byte-compiling build\bdist.win32\egg\rdflib\sparql\bison\SPARQLParserc.py to SPA
RQLParserc.pyc
creating build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO
copying rdflib.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
writing build\bdist.win32\egg\EGG-INFO\native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating 'dist\rdflib-2.4.1-py2.6-win32.egg' and adding 'build\bdist.win32\egg'
to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing rdflib-2.4.1-py2.6-win32.egg
Removing c:\python26\lib\site-packages\rdflib-2.4.1-py2.6-win32.egg
Copying rdflib-2.4.1-py2.6-win32.egg to c:\python26\lib\site-packages
rdflib 2.4.1 is already the active version in easy-install.pth
Installing rdfpipe-script.py script to C:\Python26\Scripts
Installing rdfpipe.exe script to C:\Python26\Scripts

Installed c:\python26\lib\site-packages\rdflib-2.4.1-py2.6-win32.egg
Processing dependencies for rdflib==2.4.1
Finished processing dependencies for rdflib==2.4.1
fäb
User
Beiträge: 9
Registriert: Mittwoch 23. September 2009, 09:00

Nach einer Nacht drüber schlafen fiel mir Dussel heute morgen die Lösung wie Schuppen aus den Haaren.

Mein Testfile hätte wohl einfach nicht rdflib.py heissen dürfen. BONK!

Danke @Leonidas, @EyDu und @cofi für Eure Hilfe und sorry für den Zeitraub. Das Problem saß eindeutig vor dem Monitor. :roll:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Tja .. fuer PEBCAK gibts keine automatisierten Tests.

Aber das schoene ist, dass man sich daran nur einmal verbrennt ;) (Fuer wen das nicht gilt, sollte sich ueberlegen, ob das denn das richtige fuer ihn ist)
Antworten