Я бы запустил свои файлы python или любые файлы запуска в /etc/rc.local.https://unix.stackexchange.com/questions/49626/purpose-and-typical-usage-of-etc-rc-local может помочь с объяснением.
Также я считаю, что версия python, запускаемая при запуске, не совпадает с версией, которую вы используете при входе в оболочку.При запуске сценария вы просто вызываете из командной строки:
python myscript
, где «myscript» - это тот, который вы хотите выполнить?Я столкнулся с подобной проблемой, вызывая сценарии при загрузке на моем сервере Linux.Обходной путь для меня заключался в том, чтобы найти и вызвать абсолютный путь к версии Python, которую я хотел запустить.
, например: если я использую встроенную версию Python, я имею в / usr / bin / python3 для запусканебольшую программу, которую я создал, я вижу это:
scarter@sb-gateway:~$ /usr/bin/python3 camera_sentry_beta_v2.py
Traceback (most recent call last):
File "camera_sentry_beta_v2.py", line 3, in <module>
import cv2
ImportError: No module named 'cv2'
scarter@sb-gateway:~$
, где как будто я называю правильную версию python, где у меня установлены все модули (я использую anaconda)
scarter@sb-gateway:~$ /home/scarter/anaconda3/envs/ne/bin/python read_temp.py
мой скрипт работает.Возможно, что версия python, запущенная при загрузке, не совпадает с версией, запущенной при входе в pi.Это может быть проблема пути.запустите:
echo $PATH
, чтобы получить список путей, которые ваш pi загружает при входе в систему. Можете ли вы выполнить эту команду и предоставить выходные данные, пожалуйста?
Например, это мой путь:
/home/scarter/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Я знаю, что у меня есть версия python в / home / anaconda3 / bin, которая будет запускаться первой.Я также знаю, что у меня есть совершенно другая версия, работающая в / usr / bin, которая не будет иметь те же модули, что и предыдущая установка.В заключение я хотел бы сделать 2 вещи.сначала найдите абсолютный путь к python, который вы хотите запустить, и вызовите его при запуске скрипта во время загрузки.Во-вторых, я бы попытался использовать другое место, чем .bashrc для вызова вашего скрипта, если вы можете.
Кроме того, что касается команды 'workon'.Это говорит о том, что вы создали виртуальную среду для запуска Python. Я отсылаю вас к этому примеру из https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
$ workon
$ mkvirtualenv mynewenv
New python executable in mynewenv/bin/python
Installing setuptools.............................................
..................................................................
..................................................................
done.
(mynewenv)$ workon
mynewenv
(mynewenv)$
Если вы создали среду, как указано выше, например, Python должен вызываться изmynewenv/bin/python