Выполняя тензор потока python3 на удаленном сервере, подпроцесс не может интерпретировать все входные аргументы тензорного потока.ImportError: нет модуля с именем 'scripts' - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь выполнить идентификацию образа tenorflow на удаленном сервере с моего локального хоста.На моем локальном компьютере есть сценарий, который запускает эту команду ssh подпроцесса для выполнения сценария на удаленном сервере.

stdoutdata = subprocess.getoutput('sshpass -p \'mypassword\' ssh root@myserverIP "python3 ../var/www/html/tensorflowScreenStatus/getScreenStatus.py"')

Я могу запустить сценарий и без проблем вернуть вывод моему локальному сценарию.Внутри серверного скрипта у меня есть подпроцесс python, который запускает ту же терминальную команду для отображения изображения тензорным потоком, когда я запускаю его вручную на удаленной машине, он работает нормально.

Когда серверный скрипт выполняется из моего локального скрипта, python не знает, как обрабатывать аргументы для tenorflow.

серверная команда, которая вызвала ошибку

stdoutdata = subprocess.getoutput("sudo python3 -m scripts.label_image --graph=tf_files/retrained_graph.pb --image=asdfsfsd.jpg") print("stdoutdata: " + stdoutdata)

Ошибка:

/usr/bin/python3: Error while finding spec for 'scripts.label_image' (ImportError: No module named 'scripts')

scripts.label_image - это аргумент в команде, с которой Тензорный поток понимает, что делать.Как будто, запустив команду tenorflow в подпроцессе, python забывает позволить тензорному потоку прочитать его.Эта же команда работает нормально, если я запускаю ее вручную, используя sshing на удаленном сервере.

Я даже не знаю, как назвать этот тип ошибки.Как будто python3 все еще может работать, но забывает, что означают его аргументы по умолчанию при запуске в подпроцессе.

Любая помощь вообще будет очень цениться.

1 Ответ

0 голосов
/ 12 февраля 2019

Спасибо, Сэмюэль Дион-Жирардо и Нуббард за то, что дали ему шанс.Однако я нашел решение.Я интерпретировал ошибку как означающую, что python не знал, как читать каталог scripts.label_image как путь, а вместо этого считывал его как модуль для импорта, когда команда запускалась внутри подпроцесса.

Это было неверно,Python не знал, как читать каталог scripts.label_image, поэтому я изменил команду следующим образом.

stdoutdata = subprocess.getoutput('sshpass -p \'password\' ssh root@ipaddress "python3 ../var/www/html/tensorflowScreenStatus/label_image.py --graph=../var/www/html/tensorflowScreenStatus/tf_files/retrained_graph.pb --image=../var/www/html/tensorflowScreenStatus/asdfsfsd.jpg"')

Я переместил label_image.py, jpg из скриптов в родительский каталог, установил полный каталог для нихпапки.Я также удалил средний скрипт на сервере, так что теперь мой локальный скрипт запускает эту команду ssh локально, запускает команду tenorflow удаленно, а затем возвращает результат, так что на самом деле нужен только один скрипт.

Спасибо за попыткипомощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...