Когда я запускаю код Python, используя виртуальную среду из терминала, он терпит неудачу по сравнению с запуском из IDE

Из Visual Studio Code [1.91.1] на моем Raspberry Pi 4 Model B под управлением Debian 12 код успешно запускается, когда я запускаю Main.py с помощью «Запуск и отладка». Я установил все необходимые пакеты в виртуальной среде. Однако, когда я пытаюсь запустить из терминала:

sudo python3 /home/pi/CodeAsynchronous/Main.py

Выполнение завершается неудачно, что заканчивается сообщением об ошибке ModuleNotFoundError: No module named 'xlrd'.

Проект использует виртуальную среду и, похоже, неправильно загружает пакеты при запуске с терминала, возможно, не загружает правильный интерпретатор?

Почему вы используете sudo?

wjandrea 18.07.2024 19:18

Раньше я всегда так поступал. Если я удалю sudo, результат будет тот же.

ProgrammerBret 18.07.2024 19:28

«Если я удалю sudo, результат будет тот же». - О, значит, ваше виртуальное окружение просто неактивно. sudo все равно проигнорировал бы это.

wjandrea 18.07.2024 19:31

Отвечает ли это на ваш вопрос? привилегии sudo в виртуальном окружении Python

wjandrea 18.07.2024 19:34

Также стоит отметить, что вам не следует запускать команды от имени пользователя root, если у вас нет веской причины, например, вам необходимо напрямую взаимодействовать с аппаратным устройством.

wjandrea 18.07.2024 19:37

Вы правы – активация виртуальной среды в терминале в сочетании с удалением sudo работает – спасибо!

ProgrammerBret 18.07.2024 19:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, потому, что IDE автоматически активирует для вас виртуальную среду. Попробуйте запустить: source <venv>/bin/activate в Linux или <venv>\Scripts\activate.bat в Windows.

Полная документация здесь:

Виртуальную среду можно «активировать» с помощью сценария в ее двоичном каталоге (bin в POSIX; Scripts в Windows). Это добавит этот каталог к ​​вашему PATH, так что запуск Python будет вызывать интерпретатор Python среды, и вы сможете запускать установленные сценарии без необходимости использовать их полный путь. Вызов сценария активации зависит от платформы (<venv> необходимо заменить на путь к каталогу, содержащему виртуальную среду):

Активация виртуальной среды с терминала работает! Мне также пришлось исключить «sudo» из команды, так как это, похоже, отменяет виртуальную среду в пользу глобальной.

ProgrammerBret 18.07.2024 19:39

Другие вопросы по теме