У меня был сценарий, написанный коллегой в Python 2. Я внес некоторые изменения, чтобы преобразовать его в Python 3 (не уверен, что внес правильные исправления). Я закомментировал части с кодом Python 2. Проблема в том, что скрипт запускается, но затем не может найти версию Matlab Runtime. Я видел похожие вопросы, но ответы неясны.
вот что я получаю: Не удалось найти версию 9.1 Matlab Runtime. Попытка загрузить mclmcrrt9_1.dll ...
def run_subprocess(process_name, arguments):
"""
:param process_name:
:type process_name: Pathlib2.Path()
:param arguments:
:type arguments: list
"""
# process_name = process_name.parent.joinpath(process_name.name + '.exe') # Python 2
process_name = process_name.parent.joinpath(process_name.name)
command = [str(process_name)]
for item in arguments:
command.append(item)
# sys.stderr.write(unicode(str(command) + u'\n').encode(cfg.encoding, 'replace')) # Python 2
sys.stderr.write((str(command) + u'\n'))
output = ''
error = ''
try:
my_process = psutil.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(my_process)
except Exception as e:
# sys.stderr.write(unicode(str(e) + u'\n').encode(cfg.encoding, 'replace')) # Python 2
sys.stderr.write((str(e) + u'\n'))
return '', 'Exception encountered with psutil.Popen(' + str(command) + ')'
try:
output, error = my_process.communicate()
except Exception as e:
sys.stderr.write(unicode(str(e) + u'\n').encode(cfg.encoding, 'replace'))
return '', 'Exception encountered with psutil.Popen(' + str(command) + ')'
# sys.stdout.write(unicode(output + u'\n').encode(cfg.encoding, 'replace')) # Python 2
sys.stdout.write(output)
# sys.stderr.write(unicode(error + u'\n').encode(cfg.encoding, 'replace')) # Python 2
sys.stderr.write(output)
return output, error