7

Google App Engine で PyCrypto を動作させようとしています。Google App Engine の問題 7925として報告されている、私が遭遇した問題についての長い説明があります。

基本的に、PyCrypto を Mac OS X 10.8 にインストールする賢明な方法を私は知りません-プロジェクトのルート ディレクトリに配置するdev_appserver.pyという回避策以外に。Crypto/

Crypto/残念ながら、プロジェクトがプロジェクトのルートにデプロイされたときにプロジェクトがクラッシュするという問題が発生したようです。

GAE コードを編集したりモンキーパッチを適用したりすることは可能かもしれませんが、私は GAE のコードに慣れていないので、それを快適に行うことができません。私が見たすべての提案は、Python2.5 および Mac OS X < 10.8 に対するものでした。

PyCrypto を Mac OS X 10.8 上の GAE 開発アプリケーション サーバーで動作させるための代替の賢明な方法について考えていただければ幸いです。

4

1 に答える 1

4

これは私が従事しなければならなかった狂気です:

  1. PyCrypto のすべてのバージョンを削除する

  2. https://github.com/dlitz/pycrypto/tagsから PyCrypto v2.3 をダウンロードしてインストールします

    dlitz-pycrypto-7e141bd/$ python setup.py build
    dlitz-pycrypto-7e141bd/$ sudo python setup.py install
    

    (バージョン 2.6 はblockalgoパッケージなしでボークします)

  3. Issue 1627 のコメント 1 で提案されているパッチdev_appserver_import_hook.pyに適用します。つまり、追加します。/Application/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/

    try:
      import Crypto as _CryptoTest
      _CryptoBase = os.path.dirname(_CryptoTest.__file__).replace(
        os.path.join(os.path.dirname(os.__file__), 'site-packages'),
         "") # removes preceding slash 
      del _CryptoTest
    except ImportError:
      logging.info("No Crypto could be imported")
      _CryptoBase = "Crypto"
    

    314行目あたり

    次に ALLOWED_SITE_PACKAGES 行を変更します

    ALLOWED_SITE_PACKAGE_FILES = set(
        os.path.normcase(os.path.abspath(os.path.join(
        os.path.dirname(os.__file__), 'site-packages', path)))
    

    ALLOWED_SITE_PACKAGE_FILES = set(
        path
    

    ALLOWED_SITE_PACKAGESの呼び出しですべての参照を から に変更します'Crypto'_CryptoBaseGeneratePythonPaths

    (コマンドライン、つまり/usr/local/google_appengineからdev_appserverを使用している場合、dev_appserver_import_hook.pyがそこで変更されると思います)

  4. プロジェクトを再起動します。

明らかに、Google App Engine が更新されるたびに、パッチを洗い流して繰り返す必要があります。


— この問題は、2012 年 12 月 14 日にリリースされたパッチ 1.7.4の時点で修正されているようです。

于 2012-08-03T12:26:46.760 に答える