Не удается получить доступ к пакетам внутри виртуальной среды при запуске

#python #flask #raspberry-pi #virtualenv #autostart

Вопрос:

Я работаю над созданием файла bash на своем raspberry pi, чтобы иметь возможность запускать проект веб-приложения, который я создал при запуске raspberry pi. Я смог разобраться в большинстве из них, за исключением проблем с виртуальной средой, позволяющих мне получить доступ к своим пакетам, установленным в виртуальной среде. Когда я бегу

 workon tm python main.py  

в терминале я могу заставить свой проект работать нормально. Но когда я запускаю свой файл bash

 #!/bin/bash # startup.sh #Open Chromium on the Raspberry Pi on fullscreen on bootup. Then open the virtual environemnt, and then run our python script  #su - pi -c "/usr/bin/chromium-browser --start-fullscreen 127.0.0.1:5000" cd / cd /home/pi/MySQLAppTrueTrue  source /usr/local/bin/virtualenvwrapper.sh source ~/.bashrc #workon /home/pi/.virtualenvs/tm workon tm sudo python /home/pi/MySQLAppTrueTrue/main.py  

Я получаю ошибку

 pi@raspberrypi:~/MySQLAppTrueTrue $ ./startup.sh Traceback (most recent call last):  File "/home/pi/MySQLAppTrueTrue/main.py", line 1, in lt;modulegt;  from webapp import app #import the web app  File "/home/pi/MySQLAppTrueTrue/webapp/__init__.py", line 2, in lt;modulegt;  from flask_mysqldb import MySQL #import mySQL ImportError: No module named flask_mysqldb  

Означает ли это, что моя workon tm линия на самом деле не заставляет устройство работать в виртуальной среде. Если да, то как мне заставить это работать? Или мне просто нужно устанавливать свои пакеты глобально, а не в виртуальной среде?

Ответ №1:

Вместо всей этой магии работы с virtualenvwrapper вам, вероятно, следует просто использовать интерпретатор Python этого virtualenv:

 #!/bin/bash cd /home/pi/MySQLAppTrueTrue  sudo /home/pi/.virtualenvs/tm/bin/python /home/pi/MySQLAppTrueTrue/main.py  

Комментарии:

1. И это сработало с первой попытки. Большое спасибо.

2. @MatthewVanGinneken Рад, что смог помочь. Пожалуйста, отметьте ответ как принятый тоже 🙂