Python要求root运行,但Kivy使用sudo崩溃

时间:2017-10-06 20:06:38

标签: python raspberry-pi bluetooth-lowenergy kivy sudo

我在网上搜索了这个问题的答案,但我已经做得很简短了。其他例子不同,不能让我找到解决方案。这是在Raspberry Pi 3b,Raspbian,Jessie。

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

scanner = btle.Scanner()
dev = scanner.scan(3)

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

我的问题是从命令提示符运行我的程序(带有BLE类AND kivy),如下所示:python3 FS_run.py运行应用程序w / out连接到BLE外设。但是,当我这样运行时:sudo python3 FS_run.py,我得到:

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

编辑:

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

编辑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

然后我在root中手动创建了.kivy目录,然后做了一个sudo cp来复制文件。仍然无效。

1 个答案:

答案 0 :(得分:0)

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

export PYTHONPATH=/home/pi/Documents/kivy/kivy:$PYTHONPATH

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

sudo su
source ~/.profile

我不知道它是否有帮助,但是我也有:

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