Python: ImportError: невозможно импортировать модуль для пользователя excepr для root - PullRequest
0 голосов
/ 30 марта 2020

Я установил модуль так:

# pip3 install mega

И все работает отлично. Если я пытаюсь импортировать из этого модуля как root пользователь, он работает нормально:

Python 3.7.3 (default, Dec 20 2019, 18:57:59) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from mega import Mega
>>> mega = Mega()
>>> quit()

Но если я пытаюсь сделать то же самое с обычным пользователем, он не работает:

Python 3.7.3 (default, Dec 20 2019, 18:57:59) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from mega import Mega
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'Mega' from 'mega' (unknown location)
>>> 

Это происходит со всеми не root пользователями. Проверка PYTHONPATH, похоже, одинакова для root и для непривилегированных пользователей:

>>> import sys
>>> for p in sys.path:
...     print(p)
... 

/usr/lib/python37.zip
/usr/lib/python3.7
/usr/lib/python3.7/lib-dynload
/usr/local/lib/python3.7/dist-packages
/usr/lib/python3/dist-packages
>>> 

Я использую Raspbian 10 на Raspberry Pi 3b +

Есть идеи? Заранее спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Это был вопрос разрешений. Я не знаю почему, pip3 устанавливает модуль без разрешения, но для root пользователя. Простой скрипт bash исправляет проблему:

#!/bin/sh

find /usr/local/lib/python3.7/dist-packages/ -maxdepth 1 -type d | while read line; do
    sudo chmod -R a+rx $line
done

Теперь он работает как шарм.

...