Проблема с импортом opentype при запуске скрипта python из rc.local - PullRequest
1 голос
/ 09 марта 2019

То, что я пытаюсь сделать, это выполнить скрипт на Python при запуске Raspbian. Я делаю это так:

#!/bin/sh -e
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
/usr/bin/python /home/pi/Desktop/MyProj/sample/main.py > /home/pi/Desktop/projStartup.log 2>&1 &
exit 0

То, как оно написано, в основном означает, что я запускаю его как разветвленный процесс ( '&' в конце), и каждый журнал должен идти в файл projStartup.log .

Когда я открываю терминал и набираю:

pi@raspberrypi:~ $ /etc/rc.local

все работает как положено, но когда я пытаюсь перезапустить мой Raspbian, я получаю следующую ошибку (верхняя часть стека ошибок):

File "/home/pi/Desktop/MyProj/sample/firebaseManager.py", line 1, in <module>
    from pyrebase import pyrebase
  File "/usr/local/lib/python2.7/dist-packages/pyrebase/__init__.py", line 1, in <module>
    from .pyrebase import initialize_app
  File "/usr/local/lib/python2.7/dist-packages/pyrebase/pyrebase.py", line 17, in <module>
    from oauth2client.service_account import ServiceAccountCredentials
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/service_account.py", line 26, in <module>
    from oauth2client import crypt
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/crypt.py", line 23, in <module>
    from oauth2client import _pure_python_crypt
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/_pure_python_crypt.py", line 24, in <module>
    from pyasn1_modules.rfc2459 import Certificate
  File "/usr/local/lib/python2.7/dist-packages/pyasn1_modules/rfc2459.py", line 20, in <module>
    from pyasn1.type import opentype
ImportError: cannot import name opentype

Как видите, существует проблема с импортом opentype . У меня были похожие проблемы с другими модулями, которые используются моим сценарием, и решение было установить их глобально, используя:

sudo pip install ...

Итак, теперь мне интересно, что нужно обновить на глобальном уровне, чтобы можно было избежать этой проблемы с опентином.

1 Ответ

1 голос
/ 09 марта 2019

в соответствии с предложением @ thebjorn

РЕШЕНИЕ : Для меня было ясно указать пользователя pi (который я использую при входе в систему).

sudo -H -u pi /usr/bin/python /home/pi/Desktop/MyProj/sample/main.py > /home/pi/Desktop/projStartup.log 2>&1 &
...