我正在努力让PyCrypto与Google App Engine合作,我对我遇到的一个问题进行了详细描述,该问题报告为Google App Engine的 issue 7925 。
基本上,我不知道在Mac OS X 10.8上以dev_appserver.py
将使用它的方式安装PyCrypto的合理方法 - 除了将Crypto/
放入项目根目录的解决方法。目录
不幸的是,当项目在项目的根目录中部署Crypto/
时,似乎刚刚出现问题导致项目崩溃。
可以对GAE代码进行编辑或monkeypatch,但我对GAE的代码不太熟悉,以便做到这一点。我见过的所有建议都是针对Python2.5和Mac OS X< 10.8。
对于让PyCrypto在Mac OS X 10.8上使用GAE开发应用程序服务器的其他合理方法的想法,我将不胜感激。
答案 0 :(得分:4)
这是我不得不参与的疯狂:
删除所有版本的PyCrypto
从https://github.com/dlitz/pycrypto/tags下载PyCrypto v2.3并安装
dlitz-pycrypto-7e141bd/$ python setup.py build
dlitz-pycrypto-7e141bd/$ sudo python setup.py install
(带有blockalgo
包的2.6版本)
在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"
中建议的补丁,即添加
ALLOWED_SITE_PACKAGE_FILES = set(
os.path.normcase(os.path.abspath(os.path.join(
os.path.dirname(os.__file__), 'site-packages', path)))
第314行
然后从
修改ALLOWED_SITE_PACKAGES行ALLOWED_SITE_PACKAGE_FILES = set(
path
到
'Crypto'
并在_CryptoBase
调用ALLOWED_SITE_PACKAGES时将所有引用从GeneratePythonPaths
更改为{{1}}。
(我希望如果从命令行使用dev_appserver,即/ usr / local / google_appengine,则会在那里修改dev_appserver_import_hook.py)
重启项目。
显然,只要Google App Engine更新,就必须冲洗并重复修补补丁。
注意 - 此问题似乎已在修补程序comment 1 of Issue 1627中修复。