Kivy和buildozer出现“Permission denied”错误

8
几天前,我开始涉足Android应用程序的创建。我了解了Kivy这个工具。它的简单性让我感到很有吸引力,所以我决定坚持使用并尝试设计一些应用程序。开发团队提供了Buildozer,可以轻松地为Android构建应用程序,但是我还没有能够完成这一步骤。
在创建Android应用程序的过程中,我遇到了两个错误,由于不知道它们是否相关,所以我将展示它们两个。
第一个错误:
当我在Linux(Ubuntu)上运行我的应用程序时,我会收到一个错误,尽管应用程序可以正常工作,看起来没有问题。错误日志:
 Exception in thread Thread-1:
 Traceback (most recent call last):
   File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
     self.run()
   File "/usr/lib/python2.7/threading.py", line 761, in run
     self.__target(*self.__args, **self.__kwargs)
   File "/usr/lib/python2.7/dist-packages/kivy/input/providers/mtdev.py", line 193, in _thread_run
     _device = Device(_fn)
   File "/usr/lib/python2.7/dist-packages/kivy/lib/mtdev.py", line 131, in __init__
     self._fd = os.open(filename, os.O_NONBLOCK | os.O_RDONLY)
 OSError: [Errno 13] Permission denied: '/dev/input/event7'

第二个错误

我使用sudo pip install buildozer安装了buildozer。当我尝试使用buildozer init时,出现以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/buildozer", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2825, in <module>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 710, in subscribe
    callback(dist)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2825, in <lambda>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2257, in activate
    self.insert_on(path)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2364, in insert_on
    self.check_version_conflict()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2403, in check_version_conflict
    for modname in self._get_metadata('top_level.txt'):
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2251, in _get_metadata
    for line in self.get_metadata_lines(name):
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1219, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1211, in get_metadata
    return self._get(self._fn(self.egg_info,name))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1326, in _get
    stream = open(path, 'rb')
IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/google_api_python_client-1.2-py2.7.egg/EGG-INFO/top_level.txt'

这个错误会阻止程序继续执行,buildozer init 无法创建 buildozer.spec

更多信息

事实上,我试图同时运行两个应用程序,比如说 sudo main.pysudo buildozer init。起初它似乎解决了问题,但第一次运行 buildozer android debug deploy run 花费了很长时间,不幸的是我不得不杀掉它。

第二次我想要正确地执行它,但有一个奇怪的问题是,在示例中他们没有使用 sudo。此外,我在任何地方都找到警告 不要以 sudo 运行 buildozer 。于是我卸载了 kivy 和 buildozer,并重新安装,重启了我的电脑。但没有任何变化。也许我的愚蠢的应用程序有些问题(可能解决第一个错误),但第二个错误可能不是这个原因。如果有帮助,我可以提供更多信息。

注意

我看过其他问题,但它们似乎解决了不同的问题。


3
第一个错误:不是问题。您的用户无法直接读取输入设备,但通常这是因为它是笔记本电脑的触摸板,而Kivy无需读取它(它将其用作鼠标,而不是触摸输入设备)。您可以安全地忽略它 - 如果它真的让您感到不安,您可以修改udev规则以使您的用户可以访问这些设备。 - kitti
1
第二个问题很奇怪。buildozer没有在你的错误中使用Google APIs。你是否正在使用该API包?也许你可以尝试将其移除? - kitti
在其他(完全无关的)项目中,我正在使用Python访问GDrive,但我不记得安装任何软件包。我会尽快修复权限问题(“重新安装”没有帮助吗?),等我放学回来再处理。 - quapka
重新安装不会修复您的主目录或项目文件夹中的文件,只会修复系统文件。 - kitti
最后一个问题 - 我应该使用什么“组”?如果我的username = quapka,那么groups quapka会输出quapka : quapka adm dialout cdrom sudo dip plugdev lpadmin sambashare,但是chmod -R quapka:quapka ~/.buildozer会输出chmod: invalid mode: ‘quapka:quapka’ Try 'chmod --help' for more information. 那么,我应该选择哪个组? - quapka
显示剩余5条评论
1个回答

11

第一个错误:不是问题。您的用户无法直接读取输入设备,但通常这是因为它是笔记本电脑触摸板,在 Kivy 中不需要读取它(使用它作为鼠标,而不是触摸输入设备)。您可以安全地忽略这个错误-如果真的让您困扰,您可以修改 udev 规则,以使您的用户可以访问这些设备。

第二个错误:显然是由于Google API软件包的问题。卸载该软件包可以修复 Buildozer。您现在可能能够重新安装它(也许 Google 软件包没有正确安装,这会在扫描时混淆 pkg_resources?)。如果不行,您可以尝试在虚拟环境中安装该软件包以将其与其他软件包分离。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接