为什么使用 ipython3 或 sudo python3 导入不同?
Why importing with ipython3 or sudo python3 is different?
我正在尝试使用 CircuitPython 库但遇到了一些麻烦,我将 Circuitpython bundle 中的文件放入 /lib
这个有效
$ ipython3
Python 3.7.3, blabla info
>> import sys
>> sys.path.append("/lib/adafruit_hid")
>> import adafruit_hid
这个也行
$ python3
Python 3.7.3, same blabla info
>> import sys
>> sys.path.append("/lib/adafruit_hid")
>> import adafruit_hid
这不是
$ sudo python3
Python 3.7.3, same blabla info
>> import sys
>> sys.path.append("/lib/adafruit_hid")
>> import adafruit_hid
ModuleNotFoundError: No module named 'adafruit_hid'
并且脚本需要 运行 作为 root
我卡住了
我认为这个问题与此处找到的问题有关:
本质上,它是 运行在 sudo 下 python 的不同版本。这可能意味着它无法 运行 库正确。
编辑:
这也可能与有关。
(尝试 运行 -E 标志。)
By default sudo runs commands in different environment. You can ask
sudo to preserve environment with -E
switch.
sudo -E python myScriptName.py
It comes with it's own security risks. So be careful
我正在尝试使用 CircuitPython 库但遇到了一些麻烦,我将 Circuitpython bundle 中的文件放入 /lib
这个有效
$ ipython3 Python 3.7.3, blabla info >> import sys >> sys.path.append("/lib/adafruit_hid") >> import adafruit_hid
这个也行
$ python3 Python 3.7.3, same blabla info >> import sys >> sys.path.append("/lib/adafruit_hid") >> import adafruit_hid
这不是
$ sudo python3 Python 3.7.3, same blabla info >> import sys >> sys.path.append("/lib/adafruit_hid") >> import adafruit_hid ModuleNotFoundError: No module named 'adafruit_hid'
并且脚本需要 运行 作为 root
我卡住了
我认为这个问题与此处找到的问题有关:
本质上,它是 运行在 sudo 下 python 的不同版本。这可能意味着它无法 运行 库正确。
编辑:
这也可能与
By default sudo runs commands in different environment. You can ask sudo to preserve environment with
-E
switch.sudo -E python myScriptName.py
It comes with it's own security risks. So be careful