是否有人有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`错误消息?我究竟做错了什么?这是实现这一目标的正确方法吗?
非常感谢任何帮助。我很确定,我距离让这件事工作只有一小步,但我无法弄清楚我做错了什么。
谢谢!