1

私は完全なpython初心者です。32 ビットの Windows 7 Professional に Python 3.3.1 をインストールしました。RapidSMS をインストールしようとしていますが、「pip install rapidsms」と同じくらい簡単なはずで、プロセスは開始されますが、完了せず、以下のエラー メッセージが表示されます。

私はそれをグーグルで検索しようとしましたが、この特定の問題を見つけることができませんでした。コードを自分で書いた人のための修正を見つけたエラーのためです.rapidsms自体について誰も言及していません. . Django-tablesで止まってしまうので、どうやらそのインストールをめちゃくちゃにしたのか、pythonのバージョン互換性に問題があるのだろうか。他のソフトウェアをインストールするときにpipを使用したことがあるので、それは問題ではないと思います

したがって、pyhton パッケージのインストール時にこのエラーが発生した場合、または原因が何かを本当に知っている場合は、本当に感謝しています! (承認されたら、これを RapidSMS メーリング リストに投稿する予定ですが、これがより一般的な問題であり、修正される可能性があるかどうかを確認したかったのです。)

Downloading/unpacking django-tables2==0.13.0 (from rapidsms)
 Running setup.py egg_info for package django-tables2
Traceback (most recent call last):
  File "<string>", line 16, in <module>
  File "c:\users\mhealth1\appdata\local\temp\pip-build-mhealth1\django-tables2\setup.py", line 7, in <module>
    version = re.search('__version__ = "(.+?)"', f.read()).group(1)
  File "C:\Python33\lib\re.py", line 161, in search
    return _compile(pattern, flags).search(string)
TypeError: can't use a string pattern on a bytes-like object
    Complete output from command python setup.py egg_info: 
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "c:\users\mhealth1\appdata\local\temp\pip-build-mhealth1\django-tables2\setup.py", line 7, in <module>

    version = re.search('__version__ = "(.+?)"', f.read()).group(1)

  File "C:\Python33\lib\re.py", line 161, in search

    return _compile(pattern, flags).search(string)

TypeError: can't use a string pattern on a bytes-like object

----------------------------------------
Command python setup.py egg_info failed with error code 1 in c:\users\mhealth1\a
ppdata\local\temp\pip-build-mhealth1\django-tables2
Storing complete log in C:\Users\mhealth1\pip\pip.log
4

1 に答える 1

2

Django-tables2 は、トレースバックの setup.py の 7 行目からの次のコードのため、Python3 でのインストールに失敗します。

version = re.search('__version__ = "(.+?)"', f.read()).group(1)

これは、検索パターンがバイト オブジェクトの場合に機能するはずです。バイト リテラルは、次のように文字列リテラルの前に ab を追加するだけで作成できます。

version = re.search(b'__version__ = "(.+?)"', f.read()).group(1)

これが、Python が「バイトのようなオブジェクトで文字列パターンを使用できません」というメッセージで TypeError をスローする理由です。ファイルの内容はバイト単位で読み込まれています。

テスト済みの環境のリストに基づいて、RapidSMS は現在 Python3 をまだサポートしていないと思います。これは、ここに表示されるプロジェクトの tox 環境リストで確認できます。ここでは、Python 2.6 と 2.7 のみがリストされています: https://github.com/rapidsms/rapidsms/blob/develop/tox.ini#L2

当面の問題を解決するには、Python 2.6 または 2.7 を使用して仮想環境に RapidSMS をインストールする必要があります。RapidSMS のドキュメントでは、仮想環境のセットアップについて簡単に説明しています: http://www.rapidsms.org/en/develop/topics/virtualenv.html

システムに Python 2.6 または 2.7 をインストールし、virtualenv で使用する Python を -p または --python 引数を使用して指定します。以下は、上記にリンクされている RapidSMS ドキュメントからの抜粋ですが、Python 2.7 を使用して指定するように修正されています。

mkvirtualenv --distribute --no-site-packages rapidsms --python=python2.7
于 2013-06-21T02:02:11.257 に答える