0

我已经在我的 Windows 7 x64 系统上安装了 Python 2.7,并编译并内置了 PyCrypto 2.5。在我的安装路径中,D:\Python27\Lib\site-packages\Crypto\Cipher我看到了DES.pyd. 我已经用dependency walker打开了它,并确保它initDES是唯一的出口。

我想做的是复制/粘贴DES.pyd它,因为它已经构建并在我的代码中使用它。所以现在我的项目文件夹D:\project包含test.pyDES.pyd.

test.py包含代码:

import sys
sys.path.append("D:\\project\\")
import DES
print 'hi'

运行时test.py,我收到以下错误:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import DES
SystemError: dynamic module not initialized properly</code></pre>

这个练习的目的是能够发送DES.pyd和发送test.py给我的朋友,而不需要他们构建和安装 pycrypto(一个 PITA)。我完全理解我上面的代码完全不涉及 DES,它无法导入它的事实是我的主要好奇心。接下来是使用 DES 的真实代码。

DES.pyd另外,如果我直接从 python 路径导入from Crypto.Cipher import DES就好了。

谢谢!

4

1 回答 1

0

查看https://github.com/dlitz/pycrypto/blob/master/src/block_template.c#L801的源代码。模块名称被硬编码为Crypto.Cipher._DES. _DES.pyd如果不在Crypto.Cipher包目录中,初始化将失败。

于 2012-09-18T05:45:39.700 回答