首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python需要root用户才能运行,但Kivy使用sudo会崩溃

Python需要root用户才能运行,但Kivy使用sudo会崩溃
EN

Stack Overflow用户
提问于 2017-10-07 04:06:38
回答 1查看 393关注 0票数 0

我在网上搜索过这个问题的答案,但我找不到答案。其他的例子是不同的,不会给我一个解决方案。这是覆盆子派3b,覆盆子,杰西。

我有一个使用蓝牙(ble)外围设备的kivy应用程序。我的BLE类必须扫描需要root权限的BLE设备。BLE类在kivy之外使用sudo工作,所以我不认为BLE代码存在根本问题。仅供参考,BLE类使用bluepy (btle)。为了让外围设备正常工作,我必须运行:

代码语言:javascript
复制
scanner = btle.Scanner()
dev = scanner.scan(3)

scan需要以root用户身份运行。如果我不需要它,我会删除它,但随后程序的行为会发生变化。

我的问题是从命令提示符运行我的程序(使用BLE类和kivy),就像这样:python3 FS_run.py运行应用程序,不连接到BLE外围设备。但是,当我像这样运行它时:sudo python3 FS_run.py,我得到:

代码语言:javascript
复制
Traceback (most recent call last):
  File "FS_run.py", line 1, in <module>
    from kivy.app import App
ImportError: No module named 'kivy'

我见过很多成功运行kivy w/ sudo导致按钮不起作用的帖子。我已经更改了BLE类文件的权限(chmod),并尝试在不使用sudo的情况下再次运行,但没有任何帮助。我对避免使用sudo的其他建议持开放态度。也许在子进程中运行BLE,但我不知道如何让它加入到程序的其余部分中。另外,我对BLE还是个新手,我昨天才让BLE类开始工作。可以说,我在这里有点超出我的能力范围。

我不是一个喜欢linux的人,所以我不知道该把精力集中在哪里来解决这个问题。我不确定这是否有帮助,但我在另一篇文章中看到了这一点,所以我只需要添加它:

which python3给了/usr/bin/python3

sudo which python3给了/usr/bin/python3

编辑:

与使用sudo运行时相比,python -c "import sys; print(sys.path)"会打印不同的输出。使用sudo运行时缺少'/home/pi/kivy'。我该如何着手解决这个问题呢?

编辑2:

其他帖子说这解决了这个问题:

sudo cp /home/pi/.kivy/config.ini /root/.kivy/config.ini

对我不起作用。我得到了:

cp: cannot create regularfile '/root/.kivy/config.ini': No such file or directory

因此,我在根目录中手动创建了.kivy目录,然后执行一个sudo cp命令来复制该文件。仍然不起作用。

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 15:33:07

我通过在文件末尾添加"/root/profile"行使其正常工作:

代码语言:javascript
复制
export PYTHONPATH=/home/pi/Documents/kivy/kivy:$PYTHONPATH

然后在启动应用程序之前:

代码语言:javascript
复制
sudo su
source ~/.profile

我不知道这是否有帮助,但我也做到了:

代码语言:javascript
复制
sudo cp /home/pi/.kivy/config.ini /root/.kivy/config.ini
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46613231

复制
相关文章

相似问题

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