Сайт Python-пакеты, не распознанные при выполнении, но распознанные в консоли Python

#ubuntu #virtual-machine #python-3.6

#ubuntu #виртуальная машина #python-3.6

Вопрос:

Я пытаюсь запустить файл sh с моего терминала PyCharm на виртуальной машине Ubuntu 20.04.01 LTS. У меня есть виртуальная среда, созданная для Python 3.6 с использованием MiniConda, где в настройках я могу проверить, установлены ли нужные мне пакеты (включая numpy, scipy, torch и т. Д.). При записи pip install numpy я могу убедиться, что требование уже выполнено /home/username/miniconda3/envs/DenseFusion/lib/python3.6/site-packages . При записи python --version он возвращает правильную версию, 3.6. При переходе на консоль Python и запуске import numpy ошибок нет (ни для любого другого пакета).

После cd’ing в соответствующую папку (в терминале PyCharm) я запускаю sudo ./experiments/scripts/eval_linemod.sh (местоположение моего нужного файла sh). Это успешно запускается, выполняя следующий короткий фрагмент кода:

`#!/bin/bash

set -x set -e

экспорт PYTHONUNBUFFERED=»True» экспорт CUDA_VISIBLE_DEVICES=0

python3 ./tools/eval_linemod.py —dataset_root ./datasets/linemod/Linemod_preprocessed
—обученные контрольные точки модели/linemod/pose_model_9_0.01310166542980859.pth
—уточняющая модель обученные контрольные точки/linemod/pose_refine_model_493_0.006761023565178073.pth`

Скрипт python, который он выполняет, eval_linemod.py , возвращает следующую ошибку при запуске импорта своих пакетов в начале скрипта.

ModuleNotFoundError: No module named numpy

Эта ошибка возникает при попытке любого из пакетов. Я в тупике относительно того, почему скрипт не может распознать пакеты сайта venv, хотя все остальные шаги подтверждают, что venv доступен. Я никогда не использовал Linux до этого и пытаюсь следовать инструкциям на странице DenseFusion github. Если мне не хватает очень простой характеристики Linux, пожалуйста, дайте мне знать. Любая помощь приветствуется.

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

1. Почему вы должны запускать скрипт с sudo помощью? При использовании sudo вы выполняете команду как пользователь root , который, вероятно, не увидит site-packages вашего обычного пользователя и может даже использовать другой интерпретатор.

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