【发布时间】:2019-09-13 05:41:41
【问题描述】:
我正在尝试在 iOS 中打包一个 python 应用程序。该应用程序非常简单,只有 1 行:
from firebase import firebase
我按照此链接的说明进行操作:
https://github.com/kivy/kivy-ios
Firebase 需要 pycrypto。所以我输入了
./toolchain.py build pycrypto
它失败了......所以我从文件夹 /usr/local/lib/python3.7/site-packages 复制并粘贴了 3 个文件夹:Crypto、cryptography、cryptography-2.7.dist-info 到桌面下的构建文件夹/kivy-ios。然后我输入:
./toolchain.py build pycrypto
它仍然失败......所以我使用了:
./toolchain.py pip install pycrypto
成功了!我进入 Xcode 并尝试将其推送到虚拟 iPhone XR。我收到以下错误,我不知道如何解决。请帮帮我!任何事情都非常感谢。
2019-09-13 01:24:40.859097-0400 kindact[56329:305598] [framework] CUIThemeStore: No theme registered with id=0
2019-09-13 01:24:41.060178-0400 kindact[56329:305598] Available orientation: KIVY_ORIENTATION=LandscapeLeft LandscapeRight Portrait PortraitUpsideDown
2019-09-13 01:24:41.060467-0400 kindact[56329:305598] Initializing python
/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/kindact:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
2019-09-13 01:24:41.255757-0400 kindact[56329:305598] Running main.py: /Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/YourApp/main.pyc
Traceback (most recent call last):
File "<string>", line 39, in load_module
File "/Users/hiencao/Desktop/2/kivy-ios/dist/root/python3/lib/python3.7/imp.py", line 342, in load_dynamic
return _load(spec)
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
File "<frozen importlib._bootstrap>", line 583, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1043, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: dynamic module does not define module export function (PyInit_cryptography_hazmat_bindings__constant_time)
Traceback (most recent call last):
File "<string>", line 39, in load_module
File "/Users/hiencao/Desktop/2/kivy-ios/dist/root/python3/lib/python3.7/imp.py", line 342, in load_dynamic
File "<frozen importlib._bootstrap>", line 696, in _load
File "<frozen importlib._bootstrap>", line 670, in _load_unlocked
File "<frozen importlib._bootstrap>", line 583, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1043, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: dynamic module does not define module export function (PyInit_cryptography_hazmat_bindings__constant_time)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/hiencao/Desktop/2/kivy-ios/kindact-ios/YourApp/main.py", line 1, in <module>
File "/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/lib/python3.7/site-packages/firebase/__init__.py", line 14, in <module>
import python_jwt as jwt
File "/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/lib/python3.7/site-packages/python_jwt/__init__.py", line 8, in <module>
from jwcrypto.jws import JWS, JWSHeaderRegistry
File "/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/lib/python3.7/site-packages/jwcrypto/jws.py", line 8, in <module>
from jwcrypto.jwa import JWA
File "/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/lib/python3.7/site-packages/jwcrypto/jwa.py", line 10, in <module>
from cryptography.hazmat.primitives import constant_time, hashes, hmac
File "/Users/hiencao/Library/Developer/CoreSimulator/Devices/9E046BFB-CB75-4394-BBBB-CD52178F0DEA/data/Containers/Bundle/Application/C9C66E4B-7DBA-409C-88FA-F0917B4D6681/kindact.app/lib/python3.7/site-packages/cryptography/hazmat/primitives/constant_time.py", line 11, in <module>
from cryptography.hazmat.bindings._constant_time import lib
File "<string>", line 43, in load_module
File "/Users/hiencao/Desktop/2/kivy-ios/dist/root/python3/lib/python3.7/imp.py", line 342, in load_dynamic
ImportError: dynamic module does not define module export function (PyInit__constant_time)
2019-09-13 01:24:42.146234-0400 kindact[56329:305598] Application quit abnormally!
2019-09-13 01:24:42.165161-0400 kindact[56329:305598] Leaving
【问题讨论】:
-
当您说“Firebase 需要 pycrypto”时。为什么会这样?看起来 firebase 模块只是执行一些标准 REST 请求的一种简单方法,如果它需要 pycrypto,您应该能够在不使用
firebase模块的情况下使用它 -
我使用 firebase 模块从 Firebase 实时数据库发布和获取数据。我在 pycharm 中执行了 main.py(从 firebase 导入 firebase),如果没有 pycrypto,它就无法运行。是这样的:```from firebase import firebase FBConn = firebase.FirebaseApplication('python-app-4857e.firebaseio.com', None) c = FBConn.get('/MyUsersEmail', None) print(c)
-
如果 pycrypto 是问题所在,并且您正在使用它从 Firebase 实时数据库获取和发布数据,我想说完全停止使用
firebase模块。您可以在没有firebase模块的情况下实现相同的功能,因此也无需 pycrypto :) 我有一些关于在没有 firebase 模块的情况下使用 firebase 的视频! youtube.com/watch?v=pgpoQZN9G6M -
正如您所建议的,我将 Firebase 替换为请求和 json。现在我可以在不使用 Firebase 和 pycrypto 的情况下从 Firebase 实时数据库发布和获取,这一直是个问题。谢谢。
标签: ios python-3.x firebase kivy pycrypto