新浪SAE PyCrypto模块导入错误

新浪SAE是个好东西!

但在导入PyCrypto模块时,死活不行抓狂。从错误提示来看,仿佛是找不到对应的模块。


对于存在多版本的第三方模块,在导入时除了import对应的模块以外,还需要修改config.yaml配置文件。详见:http://sae.sina.com.cn/doc/python/runtime.html#id6


解决思路:通过探测SAE模块的导入机制,找到对应的解决方案。

步骤:

1、确定config.yaml配置文件的作用;

2、定位模块的路径。


要点:

1、查看已导入模块的信息:sys.modules。

2、通过导入有多个版本的模块,探测config.yaml的作用,选择tornado模块作为测试对象。

3、os.listdir()列出目录下的文件及文件夹。


结论:

1、config.yaml配置文件中的模块名和版本号决定了模块的目录名,由减号连接模块名和版本号,如:/usr/local/sae/python/3rd/tornado-3.1.1/。

2、有默认版本号的模块保存在/usr/local/sae/python/lib/python2.7/site-packages/tornado/,其他模块则保存在/usr/local/sae/python/3rd/

3、以目录名作为模块名时,必须有__init__.pyc文件方能成功,换句话说,也就是__init__.pyc的上级目录名决定了模块名。


修改:

/usr/local/sae/python/3rd/PyCrypto-2.6/目录下存在一个名为Crypto的目录,在Crypto目录下有__init__.pyc文件。

因此,将import  PyCrypto 改成 import Crypto即可。

你可能感兴趣的:(sae,模块,导入,出错,pycrypto)