- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 android 上的 chaquopy 工具实时下载 nltk 所需的软件包。
我正在尝试将模型下载到特定的数据目录中,如下所示:
from android.os import Bundle
from android.support.v7.app import AppCompatActivity
from activity import R
from com.chaquo.python import Python
from java import jvoid, Override, static_proxy
import nltk
import os
class MainActivity(static_proxy(AppCompatActivity)):
@Override(jvoid, [Bundle])
def onCreate(self, state):
AppCompatActivity.onCreate(self, state)
self.setContentView(R.layout.activity_main)
download_dir = "{}/nltk".format(Python.getPlatform().getApplication().getFilesDir())
if not os.path.exists(download_dir):
os.mkdir(download_dir)
os.environ['NLTK_DATA'] = download_dir
print('Download Dir: {}'.format(download_dir))
#print(nltk.__version__)
#dl = nltk.downloader.Downloader('http://nltk.org/nltk_data/')
#dl.download('punkt', download_dir=download_dir)
nltk.download('punkt')
self.findViewById(R.id.text_box_1).setText(str(nltk.word_tokenize("Hello Python")))
我收到以下错误,因为客户端无法找到或下载所需的包:
E/AndroidRuntime: FATAL EXCEPTION: main Process: process, PID: 22186 java.lang.RuntimeException: Unable to start activity ComponentInfo{/utils.Utils.MainActivity}: com.chaquo.python.PyException: LookupError:
Resource [93mpunkt[0m not found.
Please use the NLTK Downloader to obtain the resource:
[31m>>> import nltk
>>> nltk.download('punkt')
[0m
For more information see: https://www.nltk.org/data.html
Attempted to load [93mtokenizers/punkt/PY3/english.pickle[0m
Searched in:
- '/usr/local/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/local/lib/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- ''
**********************************************************************
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:81)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1935)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7116)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)
Caused by: com.chaquo.python.PyException: LookupError:
**********************************************************************
Resource [93mpunkt[0m not found.
Please use the NLTK Downloader to obtain the resource:
[31m>>> import nltk
>>> nltk.download('punkt')
[0m
For more information see: https://www.nltk.org/data.html
Attempted to load [93mtokenizers/punkt/PY3/english.pickle[0m
Searched in:
- '/usr/local/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/local/lib/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
- ''
**********************************************************************
at <python>.nltk.data.find(data.py:701)
at <python>.nltk.data._open(data.py:995)
at <python>.nltk.data.load(data.py:870)
at <python>.nltk.tokenize.sent_tokenize(__init__.py:104)
at <python>.nltk.tokenize.word_tokenize(__init__.py:143)
at <python>.utils.Utils.onCreate(Utils.py:23)
at <python>.chaquopy_java.call(chaquopy_java.pyx:283)
at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:255)
at com.chaquo.python.PyObject.callAttrThrows(Native Method)
at com.chaquo.python.PyObject._chaquopyCall(PyObject.java:222)
at utils.Utils.MainActivity.onCreate(MainActivity.java:24)
at android.app.Activity.performCreate(Activity.java:7698)
at android.app.Activity.performCreate(Activity.java:7687)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096)
... 11 more
我知道该线程:What directory does chaquopy code search for the Python packages which are imported in the Python code of the Android app code这似乎是类似的情况,但没有解决我的问题。
最佳答案
尝试更新到 Chaquopy 4.0.0 or newer 。这些版本将 HOME
环境变量设置为应用程序的文件目录,NLTK 将自动在其中创建一个 nltk_data 子目录。这样就不再需要使用 NLTK_DATA
环境变量或 download_dir
参数,并且该代码应该全部删除。
(如果您已经在使用 Chaquopy 4.0.0 或更高版本,请添加您的 Chaquopy 和 NLTK 版本的评论。)
由于模拟器错误,您可能需要在循环中调用 nltk.download
,如 this answer 中所述。 .
关于android - Chaquopy 无法下载 NLTK 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56283660/
我正在使用这个文件来检查 Android 应用程序中文档的语法,但它在语言工具中给了我错误消息。我正在使用 tool = language_check.LanguageTool('en-US')检查语
当使用 chaquopy for android 时,从 java 调用模块不会运行 __init__ 方法。 PyObject utilModule = py.getModule("utils.Ut
我该怎么做? 我看到你的帖子说你可以将 java 对象传递给 Python 方法,但这不适用于 numpy 数组和 TensorFlow 张量。以下以及其各种变体是我尝试过的,但没有成功。 doubl
如何调用我使用 Chaquopy 编写的函数? 我使用了文档中的示例,效果很好。我可以使用 Python 将文本放在标签上。然后我创建了一个按钮并想调用我的函数(例如,my_func): from d
我想使用 Chaquopy 读取文件。在出现诸如“PermissionError”之类的错误后,我在 Python Idle 和 Chaquopy 中编写了相同的代码: Idle 中的这段代码在输出中
我有一个 Android 相机应用程序和一个单独的 Python 图像处理管道,我想使用 Chaquopy 与该应用程序集成。然而,python 代码本身很大,并且依赖于大约 50 个模块,例如 te
我正在尝试在运行计算机视觉 python 脚本的 Android 应用程序中引用两个文件。 按照此处的说明操作:https://chaquo.com/chaquopy/doc/current/andr
因此,从文档中我想出了如何将文件“硬编码”到 android studio(基本上在 androidstudioprojects 目录中)并且可以从我的 python 脚本成功访问它们。 (使用 jo
android 构建成功,但在运行时抛出错误。 so和python文件路径为app\src\main\python。 1.so文件路径改成app\src\main\jniLibs\arm64-v8a或
我已将 Chaquopy 实现到我的 Android 应用程序中,以利用 Python 中预先训练的神经网络模型。 尝试调用python代码时遇到; “com.chaquo.python.PyExce
我正在尝试使用 android 上的 chaquopy 工具实时下载 nltk 所需的软件包。 我正在尝试将模型下载到特定的数据目录中,如下所示: from android.os import Bun
我目前正在尝试找出如何从 Python 模块更改 MainActivity(UI 是用 Java 编写的)中的 TextView 的文本。我知道我必须以某种方式将我的 mainactivity 传递给
所以,我对 chaquopy 还很陌生,想知道是否有新生成的(即:在应用程序运行时编写的构建后).py 文件来运行? 我的意思是:假设我将 textEdit View 的内容保存到一个名为“newFi
我正在尝试使用 Chaquopy 将计算机视觉应用程序移植到 Android。当我尝试运行我的脚本时,以下行出现以下错误: cv2.waitKey(100) 打印到嵌入式 python 控制台的错误是
如何将多个列表、值等从我的 Python 脚本返回到 Java 而不会以单个对象结束?现在,我以一个包含两个返回值的 PyObject 结束,但我还没有想出如何在 Java 中再次将它们分开。 pyt
我正在使用 chaquopy在 android 中运行 python 的演示。 (取自 GitHub https://github.com/ericdecanini/HelloChaquopy ) 我
我目前正在使用 Android Studio 和 BeautifulSoup 制作一个网络抓取应用程序。我如何实现 from bs4 import BeautifulSoup 像在 Python 中一
我正在构建一个集成了 python 的 android 应用程序。我使用 chaquopy 将 python 与 android 集成。我已经为它安装了 TensorFlow 2.2 和 python
我在 android 应用程序中使用 python 作为一些科学程序的后端代码。为此,我正在使用 Chaquopy 插件。访问存储在“app/src/main/python/”的文本文件时,我发现错误
我尝试在 Android 应用程序中使用原型(prototype) python 代码,我发现了 Chaquopy作为一个可能的库。 文档有点稀疏,所以我想澄清一下:我可以使用 Chaquopy 在
我是一名优秀的程序员,十分优秀!