首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AndroidStudio中运行python代码(使用Chaquopy)失败,

在AndroidStudio中运行python代码(使用Chaquopy)失败,
EN

Stack Overflow用户
提问于 2022-02-16 03:36:14
回答 1查看 89关注 0票数 0

我尝试在Android中运行python代码,但是它保持了make错误: FileNotFoundError

代码语言:javascript
复制
plt.savefig('C:/Users/userA/Desktop/Project/spam_1.png', dpi=300, bbox_inches='tight', pad_inches=0)

我创建了C:/Users/userA/Desktop/Project目录,并希望创建和保存文件名spam1.png

有一次我在朱庇特笔记本上试过,它没有出错,但是在安卓工作室.

这是错误代码

代码语言:javascript
复制
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pbl4_importpython/com.example.pbl4_importpython.MainActivity}: com.chaquo.python.PyException: FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/userA/Desktop/Project/spam_1.png'
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: com.chaquo.python.PyException: FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/suajj/Desktop/PBL4/spam_1.png'
        at <python>.matplotlib.cbook.to_filehandle(__init__.py:432)
        at <python>.matplotlib.cbook.open_file_cm(__init__.py:447)
        at <python>.contextlib.__enter__(contextlib.py:113)
        at <python>.matplotlib.backends.backend_agg.print_png(backend_agg.py:529)
        at <python>.matplotlib.backend_bases.print_figure(backend_bases.py:2082)
        at <python>.matplotlib.figure.savefig(figure.py:2180)
        at <python>.matplotlib.pyplot.savefig(pyplot.py:722)
        at <python>.myscript.main(myscript.py:53)
        at <python>.chaquopy_java.call(chaquopy_java.pyx:380)
        at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrowsNative(chaquopy_java.pyx:352)
        at com.chaquo.python.PyObject.callAttrThrowsNative(Native Method)
        at com.chaquo.python.PyObject.callAttrThrows(PyObject.java:232)
        at com.chaquo.python.PyObject.callAttr(PyObject.java:221)
        at com.example.pbl4_importpython.MainActivity.onCreate(MainActivity.java:39)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
EN

回答 1

Stack Overflow用户

发布于 2022-02-17 13:25:16

Android应用程序无法直接访问计算机的文件系统,即使它在模拟器中运行。因此,尝试将其保存到应用程序的files目录中,如查克比文献中所述

os.environ["HOME"]设置为应用程序的内部存储目录。在此位置创建的任何文件或子目录都将持续到应用程序卸载为止。 如果您的应用程序是可调,您也可以使用设备文件资源管理器从Android读取和写入这个目录。它的路径将类似于/data/data/your.application.id/files

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71136092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档