pyqtdeploy:添加外部模块

时间:2016-02-05 16:10:24

标签: android python pyqt pycrypto pyqtdeploy

是否有人有pyqtdeploy经验并添加外部模块?我目前正在使用pyqtdeploy(版本1.2)和PyQt 5.5.1来编写可以部署到Android设备的应用程序。没有任何外部模块,pyqtdeploy冻结效果很好。但是,我不确定如何将外部模块(不是纯Python的)添加到我的应用程序中。

特别是,我想添加外部模块pycrypto。因此,我下载了pycrypto源代码,使用Android工具链(来自Android NDK)编译它,现在我有一堆* .py和* .so文件。如何将它们添加到我的应用程序中?

我最初的尝试是将* .py和* .so文件(基本上是整个pycrypto模块)添加到pyqtdeploy中的“Other Packages”选项卡中。 但现在,当我在我的应用程序(from Crypto.Cipher import AES)中导入相关的pycrypto时,我收到以下错误消息:

File: ":/Crypto/Cipher/_AES.py", line 20 in __bootstrap__ TypeError: 'NoneType' object is not callable

抛出错误的_AES.py文件,如下所示:

def __bootstrap__():
   global __bootstrap__, __loader__, __file__
   import sys, pkgutil, imp
   __file__ = pkgutil.get_data(__name__,'_AES.cpython-34m.so')
   __loader__ = None; del __bootstrap__, __loader__
   imp.load_dynamic(__name__,__file__)
__bootstrap__()

起初我认为,* .so文件名是错误的,因此,我得到了NoneType错误,所以我将_AES.py中的文件名改为其他类似'test.so'的文件。令人惊讶的是,现在,我收到的错误消息与以前不同:

File ":/pkgutil.py" line 629, in get_data ImportError: qrcimporter: error opening file :/Crypto/Cipher/test.so

好的,所以文件名应该没问题吧?但为什么我会收到'NoneType`错误消息?我究竟做错了什么?这是实现这一目标的正确方法吗?

非常感谢任何帮助。我很确定,我距离让这件事工作只有一小步,但我无法弄清楚我做错了什么。

谢谢!

0 个答案:

没有答案