こんにちは、数日間、Python3 で実行されている lincolnloop から Python QR コード モジュールを取得しようとしています。Python 2.x で完璧に動作します。- https://github.com/lincolnloop/python-qrcode
一般に、私は Python プログラミングに非常に慣れていませんが、これまでに宿題を終えたと思います。
最初のエラー:
File "/usr/lib/python3.2/qrcode/util.py", line 274, in __init__
if not isinstance(data, basestring):
NameError: global name 'basestring' is not defined
そのため、ベースストリングは Python3 に存在しなくなりました。ここにあるこのコード ステートメントでこれを修正します。- https://github.com/oxplot/fysom/issues/1
try:
unicode = unicode
except NameError:
# 'unicode' is undefined, must be Python 3
str = str
unicode = str
bytes = bytes
basestring = (str,bytes)
else:
# 'unicode' exists, must be Python 2
str = str
unicode = unicode
bytes = str
basestring = basestring
それで次のエラーが出てきます。
File "/usr/lib/python3.2/qrcode/util.py", line 285, in __init__
elif re.match('^[%s]*$' % re.escape(ALPHA_NUM), data):
File "/usr/lib/python3.2/re.py", line 153, in match
return _compile(pattern, flags).match(string)
TypeError: can't use a string pattern on a bytes-like object
だから私はここにある解決策を試してみます - Python TypeError on regexから次のコードを変更します:
elif re.match('^[%s]*$' % re.escape(ALPHA_NUM), data):
に:
elif re.match(b'^[%s]*$' % re.escape(ALPHA_NUM), data):
バイナリモードで正規表現を処理します。しかし、これはコードの同じ行で次の実行をスローします。
elif re.match(b'^[%s]*$' % re.escape(ALPHA_NUM), data):
TypeError: unsupported operand type(s) for %: 'bytes' and 'str'
私も変えようと
ALPHA_NUM = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'
に
ALPHA_NUM = b'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'
ただし、これは Execption に変更を加えません。
したがって、これは前のエラーと同じエラーを示しており、コード内のどこでも、バイトまたは文字列タイプに関係なく、このタイプのエラーである必要があります。しかし、私はそれを見つけることができません。
Python に飛び込むにはスクリプト全体が非常に複雑であることは知っていますが、私のプロジェクトでは、動作する QR コード ジェネレーターが必要です。
誰かが私に手がかりを与えることができますか?前もって感謝します!