Выполнение скрипта Python через файл bat в ASP.NET Web API - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь запустить скрипт на python. Он запускает обученную модель из Кераса. Я работал с C # Web API. Я сломал голову, пытаясь запустить скрипт на python. Я сделал это через файл .bat. Он отлично работает в проекте Windows. И сама летучая мышь тоже работает отлично. Проблема возникает, когда веб-API по какой-то причине хочет запустить файл .bat. когда я запускаю скрипт через IIS Express, он не распознает файл data.csv, который должна прочитать модель.

Позвольте мне показать вам некоторый код Запустите файл bat

           System.Diagnostics.Process.Start(@"pathtobatfile\runner.bat");

файл летучей мыши

pathtoenviroment\python.exe pathtoscript\AI.py %*
PAUSE

Хорошо, поэтому, когда я запускаю его вне IIS Express, он работает нормально, но когда я запускаю его в веб-API ...

Traceback (последний вызов был последним): Файл "D: \ AIASSETS \ AI.py", строка 13, в q = pd.read_csv ('data.csv') Файл "C: \ Users \ Marco \ Anaconda3 \ envs \ entornotensor \ lib \ site-packages \ pandas \ io \ parsers.py", строка 678, в parser_f вернуть _read (filepath_or_buffer, kwds) Файл "C: \ Users \ Marco \ Anaconda3 \ envs \ entornotensor \ lib \ site-packages \ pandas \ io \ parsers.py", строка 440, в _read parser = TextFileReader (filepath_or_buffer, ** kwds) Файл "C: \ Users \ Marco \ Anaconda3 \ envs \ entornotensor \ lib \ site-packages \ pandas \ io \ parsers.py", строка 787, в init self._make_engine (self.engine) Файл "C: \ Users \ Marco \ Anaconda3 \ envs \ entornotensor \ lib \ site-packages \ pandas \ io \ parsers.py", строка 1014, в _make_engine self._engine = CParserWrapper (self.f, ** self.options) Файл "C: \ Users \ Marco \ Anaconda3 \ envs \ entornotensor \ lib \ site-packages \ pandas \ io \ parsers.py", строка 1708, в init self._reader = parsers.TextReader (src, ** kwds) Файл "pandas_libs \ parsers.pyx", строка 384, в файле pandas._libs.parsers.TextReader. cinit Файл "pandas_libs \ parsers.pyx", строка 695, в файле pandas._libs.parsers.TextReader._setup_parser_source FileNotFoundError: Файл b'data.csv 'не существует

но он действительно существует, это просто происходит, когда я запускаю его из Web API.

некоторая дополнительная информация: файлу bat требуется много времени для запуска скрипта python. но сам скрипт запускается мгновенно. файл data.csv генерируется с помощью кода и генерируется правильно. Может ли быть так, что файл занимает слишком много времени для записи самого себя, а пакетный файл запускается до записи data.csv? Я сделал несколько тестов в другом проекте, но data.csv был написан мгновенно.

Спасибо заранее Редактировать: Я только что проверил отладку и даже в спящем потоке, что сборка data.csv не занимает много времени. Консоль IIS просто не позволяет скрипту python читать файл data.csv

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

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

q = pd.read_csv('D:\\AIASSETS\\data.csv')

и где бы вы ни использовали файл, добавьте «D: \ AIASSETS \» или, лучше сказать, независимо от того, какая у вас рабочая папка. даже в вашей модели или если вы пишете файл. Я не говорю о Python, но я считаю, что есть способ установить рабочую папку по коду, который тоже может сработать.

0 голосов
/ 11 ноября 2018

Вы пытались изменить учетную запись, которую веб-сайт использует в IIS? Так как это может быть проблема с разрешением, если используется учетная запись networkservice.

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