错误'没有这样的文件或目录:使用 web3.py、构建和 colab 编译 kivy 应用程序时'build/lib.linux-x86_64-3.9/cytoolz/_version.py'



我正在尝试创建一个简单的应用程序,用WEB3.py和kivy测试与WEB3的连接。

这是我的主要.py:

from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from web3 import Web3
class MainApp(MDApp):

def build(self):
bsc = 'https://bsc-dataseed.binance.org/'
web3 = Web3(Web3.HTTPProvider(bsc))

if (web3.isConnected()):
print("Connected!")
return MDLabel(text="OK connected ! ", halign="center")
else:
print("KO")
return MDLabel(text="KO ", halign="center")
MainApp().run()

这是我在buildozer.spec:中的要求

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = 
python3,
cython,
kivy,
kivymd,
pillow,
android,
attrdict,
certifi,
cffi,
chardet,
cytoolz,
eth-abi,
eth-account,
eth-accounts,
eth-hash,
eth-keyfile,
eth-keys,
eth-rlp,
eth-utils,
eth-typing,
hexbytes,
idna,
lru-dict,
openssl,
pycryptodome,
pyzbar,
raven,
requests,
rlp,
setuptools,
toolz,
web3

编译成功了,但当我运行应用程序时,我收到了以下带有logcat的消息:

08-22 08:36:31.065 16472 16505 I python  :  Traceback (most recent call last):
08-22 08:36:31.066 16472 16505 I python  :    File "/home/HelloWeb3/.buildozer/android/app/main.py", line 3, in <module>
08-22 08:36:31.066 16472 16505 I python  :    File "/home/HelloWeb3/.buildozer/android/platform/build-arm64-v8a/build/python-installs/helloweb3/arm64-v8a/web3/__init__.py", line 6, in <module>
08-22 08:36:31.066 16472 16505 I python  :    File "/home/HelloWeb3/.buildozer/android/platform/build-arm64-v8a/build/python-installs/helloweb3/arm64-v8a/eth_account/__init__.py", line 1, in <module>
08-22 08:36:31.066 16472 16505 I python  :    File "/home/HelloWeb3/.buildozer/android/platform/build-arm64-v8a/build/python-installs/helloweb3/arm64-v8a/eth_account/account.py", line 15, in <module>
08-22 08:36:31.066 16472 16505 I python  :    File "/home/HelloWeb3/.buildozer/android/platform/build-arm64-v8a/build/python-installs/helloweb3/arm64-v8a/cytoolz/__init__.py", line 1, in <module>
08-22 08:36:31.067 16472 16505 I python  :  ImportError: dlopen failed: "/data/user/0/org.test.helloweb3/files/app/_python_bundle/site-packages/cytoolz/itertoolz.so" is for EM_X86_64 (62) instead of EM_AARCH64 (183)
08-22 08:36:31.067 16472 16505 I python  : Python for android ended.

所以我制作了自定义食谱来编译toolz和cytolz:

toolz

from pythonforandroid.recipe import CythonRecipe 

class ToolzRecipe(CythonRecipe): 
"""Build toolz"""
version = "0.12.0"
url = "https://github.com/pytoolz/toolz/archive/refs/tags/{version}.zip"
name = "toolz"
depends = ["setuptools"]

recipe = ToolzRecipe()

cytolz

from pythonforandroid.recipe import CythonRecipe 

class CytoolzRecipe(CythonRecipe): 
"""Build cytoolz"""
version = "0.12.0"
url = "https://github.com/pytoolz/cytoolz/archive/refs/tags/{version}.zip"
name = "cytoolz"
depends = ["setuptools"]

recipe = CytoolzRecipe()

但这次使用buildozer编译失败,出现错误"[DEBUG]:错误:[Erno 2]没有这样的文件或目录:"build/lib.linux-x86_64-3.9/cytoolz/_version.py"':

[DEBUG]:    error: [Errno 2] No such file or directory: 'build/lib.linux-x86_64-3.9/cytoolz/_version.py'

我不知道该怎么办。我是colab linux的新手。

欢迎提出任何建议。

谢谢。

我也是kivy和buildozer的新手。但我有一些建议可以帮你解决问题。

首先,如果您在使用colab时遇到问题,我的意思是,如果您使用colab中的buildozer时出现错误,则意味着您在安装buildozer方面有问题。在这种情况下,从日志中复制错误,并将其复制到chat-gpt或google-bard中,因为这些ia将帮助您更好地理解错误。

其次,如果buildozer生成了apk文件,但当你安装它并试图打开应用程序时,应用程序崩溃了。你必须下载android工作室及其所有要求。然后进入android工作室的终端,输入命令"adb-logcat-spython"。这将显示错误,因为你的应用程序crach,但在看到终端中的错误之前,你必须从你的android手机激活usb debbug。要做到这一点,请访问youtube,研究如何在android智能手机中激活usb调试。我希望它能帮助你

相关内容

最新更新