为啥除了 jnius 我不能导入任何 pyjnius 的东西?
Posted
技术标签:
【中文标题】为啥除了 jnius 我不能导入任何 pyjnius 的东西?【英文标题】:Why can't I import anything of pyjnius besides jnius?为什么除了 jnius 我不能导入任何 pyjnius 的东西? 【发布时间】:2020-01-16 12:53:05 【问题描述】:当我使用 python 解释器时,我可以很好地导入它。但是如果我写一个脚本,出于某种原因import jnius
工作正常,但是当我写from jnius import autoclass
或from jnius import JavaClass
时,我得到一个ImportError: Cannot import 'autoclass' from 'jnius'
。
我什至尝试过写作
import jnius
Python Activity = jnius.autoclass('org.kivy.android.PythonActivity')
但我得到AttributeError: 'jnius' has no attribute 'autoclass'
。
编辑:
当我们讨论autoclass
主题时,当我写
Python Activity = autoclass('org.kivy.android.PythonActivity')
我明白了
jnius.JavaException: Class not found b'org/kivy/android/PythonActivity'
【问题讨论】:
会不会是 python2/3 的问题?当它工作时你使用哪个解释器,脚本调用哪个解释器?你可以打印sys.version
(如果我没记错的话)。
我正在使用 python 3.7.3,我没有另一个执行脚本的解释器
你确定吗?您是否与sys.version
核对过(那将在我要检查的列表的顶部)。您在解释器中所做的事情是否与您在脚本中所做的事情相同?您是否在新打开的口译员中尝试过?一般应该在sys.path
或PYTHONPATH
一看到你的评论,我确实使用了sys.version
。它说版本是3.7.3。在哪里可以找到PYTHONPATH
?
PYTHONPATH
是您设置的环境变量,即使用$ PYTHONPATH=/path/to/some/modules python # or add script.py here
启动您的脚本(或解释器)(您不需要$
,它只是标记通常的bash 提示,在Windows 中它就像C:\...\>
),但我会从检查sys.path
开始,甚至更早,启动一个新的/新鲜的python 解释器并尝试在其中包含你想要的东西。如果它适用于解释器,它应该适用于脚本。那里没有两难选择......你是如何在解释器中包含这些东西的?你能再做一次吗?
【参考方案1】:
在这里。
我做了检查,一切都设置正确。我只是没有意识到在导入 jnius 之前必须先导入 kivy。
如果您想对其进行测试,代码应该类似于下面的代码。我只在使用 Pydroid3 的 Android 手机上尝试过,还没有在笔记本电脑上尝试过
import kivy
from kivy.app import App
from kivy.uix.label import Label
from jnius import autoclass
PythonActivity = autoclass('org.kivy.android.PythonActivity')
class MyApp(App):
def build(self):
return Label(text=str(type(PythonActivity)))
if __name__=="__main__":
MyApp().run()
它应该显示以下行<class 'jnius.jnius.MetaJavaClass'>
【讨论】:
以上是关于为啥除了 jnius 我不能导入任何 pyjnius 的东西?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 css 不能在 localhost.3000 上应用?
蓝牙连接错误:“jnius.jnius.JavaException:发生 JVM 异常:读取失败,套接字可能关闭或超时,读取 ret:-1”