У меня есть внешнее приложение, которое поставляется в виде отдельного пакета с собственным подмножеством python и зависимостями. Я намерен связать этот пакет с моим собственным кодом Python и запустить его в облачном потоке данных Google. У меня есть готовый трубопровод. Мне нужна помощь с запуском сценария оболочки, который выдает ошибку «not found»
/usr/local/lib/python2.7/dist-packages/<package>/bin/python2.7: not found
Я вызываю скрипт из своего кода на Python, используя
Process = '/usr/local/lib/python2.7/dist-packages/<package>/bin/Process'
subprocess.check_call([Process , str(filepath)])
Содержимое Процесса:
#!/bin/sh
. /usr/local/lib/python2.7/dist-packages/<package>/Bashrc
/usr/local/lib/python2.7/dist-packages/<package>/bin/python2.7 -s /usr/local/lib/python2.7/dist-packages/<package>/lib/python2.7/site-packages/<package_name>/Process.py "$@"
Я попытался поместить чеки в код Python
if os.path.exists("/usr/local/lib/python2.7/dist-packages/<package>/bin/Process"):
logging.info("Process exists")
else:
logging.info("Process does not exists")
if os.path.exists("/usr/local/lib/python2.7/dist-packages/<package>/bin/python2.7"):
logging.info("/usr/local/lib/python2.7/dist-packages/<package>/bin/python2.7 exists")
else:
logging.info("/usr/local/lib/python2.7/dist-packages/<package>/bin/python2.7 does not exist")
if os.path.exists("/usr/local/lib/python2.7/dist-packages/<package>/Bashrc"):
logging.info("/usr/local/lib/python2.7/dist-packages/<package>/Bashrc exists")
else:
logging.info("/usr/local/lib/python2.7/dist-packages/<package>/Bashrc does not exist")
Все они подтверждают, что файл существует. Если я выполню <package>/bin/python2.7
в моей системе, он отлично запускает IDLE.
Эта проблема очень связана с вопросом здесь . Я также отредактировал переменные окружения PYTHONPATH, PATH и другие, включив в них /usr/local/lib/python2.7/dist-packages/<package>/bin/
Я ожидаю, что исполняемый двоичный файл Python запустится и начнет выполнять Process.py со всеми входными параметрами. Что мне делать?
Обычно я хочу передать переменную filepath
в качестве аргумента из функции.