ImportError: cannot import name _qrcode

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
Bouni
User
Beiträge: 6
Registriert: Dienstag 19. Januar 2010, 20:36

Hallo allerseits,

Ich habe vor qrcodes mittels python zu erstellen.

Dazu will ich pyqrcode verwenden.

Nach Anlaufschwierigkeiten beim installieren des .egg's hab ich die paar Zeilen Code zum erstellen eine qrcodes von der Webseite kopiert:

qrcode.py:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8
#
# pyqrcode sample encoder

import sys, qrcode

e = qrcode.Encoder()
image = e.encode('woah!', version=15, mode=e.mode.BINARY, eclevel=e.eclevel.H)
image.save('out.png')
Beim ausführen des qrcode.py erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "./qrcode.py", line 11, in <module>
    import qrcode
  File "/usr/local/lib/python2.6/dist-packages/qrcode-0.2.1-py2.6-linux-x86_64.egg/qrcode/__init__.py", line 6, in <module>
    from qrcode import _qrcode
ImportError: cannot import name _qrcode
Ich habe google schon zum glühen gebracht, jedoch ohne Erfolg :/

Wäre Dankbar wenn mir einer nen wink mit dem Zaunpfahl geben könnte :D


Danke schon mal

Bouni
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Das test-Skript hat den selben Namen wie dsa Modul das du importieren willst, bennene mal dein Skript um, dann sollte es gehen
the more they change the more they stay the same
Bouni
User
Beiträge: 6
Registriert: Dienstag 19. Januar 2010, 20:36

Hallo David,

Code: Alles auswählen

mv qrcode.py test.py
./test.py
Selber Fehler
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Bouni hat geschrieben:Hallo David,

Code: Alles auswählen

mv qrcode.py test.py
./test.py
Selber Fehler
Wahrscheinlich liegt in dem Verzeichnis noch die qrcode.pyc herum. Lösch die mal.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nein, das Problem ist, dass qrcode wohl ein C-Modul hat, _qrcode welches eben kompiliert werden muss und dessen kompilierte Version auf zum betreffenden System passen muss.

Bouni sollte uns am besten sagen wie er denn das Paket installiert hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bouni
User
Beiträge: 6
Registriert: Dienstag 19. Januar 2010, 20:36

Morgen,

@Leonidas:

Vorweg: Ich bin auf Arbeit und berichte jetzt grade aus dem Kopf, also weis ich nicht mehr jeden Schritt bis in Detail, aber ich versuchs mal :)

Als erstes habe ich versucht das fertige binary zu installieren:

http://pyqrcode.sourceforge.net/ -> Ubuntu Linux (8.10 amd64)

Hat nicht funktioniert, wie auf der Seite beschrieben weil anscheinend easy_install ein nicht bekannter Befehl war.
Danach habe ich versucht easy_install zu installieren was auch funktioniert hat. Aber das .egg wollte immer noch nicht. (evtl weil es für Ubuntu 8.10 ist, ich habe Ubuntu 9.10)

Als nächstes hab ich versucht die sourcen zu kompilieren

Code: Alles auswählen

make && sudo make install
-> Fehler


Das Makefile:

Code: Alles auswählen

VERSION = 0.2.1
BASEPATH = decoder
LIBPATH = qrcode
SOURCEPATH = $(BASEPATH)/src
CLASSPATH = $(BASEPATH)/classes
LIBFILE = $(LIBPATH)/qrcode.jar
SRC = $(SOURCEPATH)/net/sourceforge/pyqrcode/Decoder.java

GENERATE=python -m jcc --jar $(LIBFILE) \
	    --python qrcode --version $(VERSION) --files 1 \
	    --exclude jp.sourceforge.qrcode.QRCodeDecoder \
	    --exclude jp.sourceforge.qrcode.reader.QRCodeDataBlockReader \
	    --exclude jp.sourceforge.qrcode.reader.QRCodeImageReader \
	    --exclude jp.sourceforge.qrcode.pattern.AlignmentPattern \
	    --exclude jp.sourceforge.qrcode.pattern.FinderPattern \
	    --exclude jp.sourceforge.qrcode.pattern.LogicalSeed \
	    --exclude jp.sourceforge.qrcode.geom.Axis \
	    --exclude jp.sourceforge.qrcode.geom.Line \
	    --exclude jp.sourceforge.qrcode.geom.Point \
	    --exclude jp.sourceforge.qrcode.geom.SamplingGrid \
	    --exclude jp.sourceforge.qrcode.util.ContentConverter \
	    --exclude jp.sourceforge.qrcode.util.DebugCanvas \
	    --exclude jp.sourceforge.qrcode.util.DebugCanvasAdapter \
	    --exclude jp.sourceforge.qrcode.util.QRCodeUtility \
	    --exclude jp.sourceforge.qrcode.exception.AlignmentPatternNotFoundException \
	    --exclude jp.sourceforge.qrcode.exception.InvalidDataBlockException \
	    --exclude jp.sourceforge.qrcode.exception.SymbolNotFoundException \
	    --exclude jp.sourceforge.qrcode.exception.DecodingFailedException \
	    --exclude jp.sourceforge.qrcode.exception.InvalidVersionException \
	    --exclude jp.sourceforge.qrcode.exception.VersionInformationException \
	    --exclude jp.sourceforge.qrcode.exception.FinderPatternNotFoundException \
	    --exclude jp.sourceforge.qrcode.exception.InvalidVersionInfoException \
	    --exclude jp.sourceforge.qrcode.ecc.BCH15_5 \
	    --exclude jp.sourceforge.qrcode.data.QRCodeImage \
	    --exclude jp.sourceforge.qrcode.data.QRCodeSymbol \
	    --exclude jp.sourceforge.reedsolomon.Galois \
	    --exclude jp.sourceforge.reedsolomon.RsDecode 

lib: $(SRC)
	python util/deps.py
	javac -d $(CLASSPATH) -sourcepath $(SOURCEPATH) $<
	jar cvf $(LIBFILE) -C $(CLASSPATH) .
	$(GENERATE) --build
	python encoder/setup.py build

egg: lib
	python encoder/setup.py bdist_egg

install: lib
	python encoder/setup.py install

all: lib

clean:
	rm -rf $(CLASSPATH)/* $(LIBFILE) build dist qrcode.egg-info
Ich weis nur das er wegen der Zeile 9

Code: Alles auswählen

GENERATE=python -m jcc --jar $(LIBFILE)
gemeckert hat.

Nach ewigem Google'n hab ich rausgefunden das man seit Python XY -m jcc.__main__ angeben soll.

als das Makfile dahingehend geändert war hat er aber in der Zeile 43 $(GENERATE) --build gemeckert das ihm das __main__ nicht passt.

daraufhin hab ich das auskomentiert und er lief ohne Fehler bis zum Ende durch !?

und nun steh ich hier :?

Hoffe das hilft weiter den Fehler einzugrenzen!


Danke schon mal


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

Uhh, das braucht Java und sowas wird wohl ziemlich hakelig. Besteht die Möglichkeit, dass du PyQrCodec nutzt? Das nutzt zwar C und C++, ist aber vermutlich weitaus einfacher zu bauen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bouni
User
Beiträge: 6
Registriert: Dienstag 19. Januar 2010, 20:36

Hallo Leonidas,

Danke für die Antwort :)

Solange es funktioniert ist mir alles recht :D

Werd das heut Abend gleich mal testen!

DANKE
Bouni
User
Beiträge: 6
Registriert: Dienstag 19. Januar 2010, 20:36

Hallo allerseits :)

Ich hatte Erfolg :D

Hier eine kurze Beschreibung für alle suchenden:

(Ich arbeite mit Ubuntu 9.10)

Herunterladen und entpacken:

Code: Alles auswählen

mkdir ~/pyqrcodec
cd ~/pyqrcodec
wget http://www.pedemonte.eu/pyqr/files/PyQrcodec_Linux.tar.gz
tar -xzf PyQrcodec_Linux.tar.gz
cd PyQrCodec
Erforderliche Pakete installieren:

Code: Alles auswählen

apt-get install g++
apt-get install python-dev
apt-get install libcv1 libcvaux1 libcv-dev libcvaux-dev
Kompilieren und installieren:

Code: Alles auswählen

python setup.py build
python setup.py install
Folgendes Testscript hat bei mir wunderbar funktioniert:

Code: Alles auswählen

#!/usr/bin/env python

# Einen QR Code erstellen
import PyQrcodec
size, image = PyQrcodec.encode('This is my first QR Code') 
image.save('QR_Code.png')

# den gerade erstellten Code decodieren
status, string = PyQrcodec.decode('QR_Code.png')
print string

Danke noch einmal an alle für die Hilfe :D

Bouni
Antworten