Я вызываю другую программу с фрагментом кода, который выглядит так:
import subprocess
lc="/package/bin/program --do stuff"
command_list = lc.split()
ljs=subprocess.Popen(command_list,stdout=subprocess.PIPE)
ljs.communicate()[0]
Строка отлично работает в командной строке UNIX, а код работает в Python 2.7. Но в Python 3.4 я получаю такую ошибку:
File "/package/bin/program", line 2, in <module>
from package import module
ImportError: No module named package
«/package/bin/program» здесь вызывает зависимость от другого файла в пакете, что, я думаю, является основной проблемой. У меня есть вызовы других программ, которые нормально работают в 3.4.
Что изменилось в 3.4, что может быть причиной этого?
(Заранее извините за загадочный код - я звоню внутренним инструментам компании, которые не могу раскрыть здесь).
bin/program
в текущем рабочем каталоге? - person falsetru   schedule 05.12.2015bin/program
- это приложение для Python 2.7? Возможно, в среде, которую вы передаете подпроцессу, есть что-то, что заставляет его искать модули в пути 3.4. Проверьте, что находится вos.environ
, особенно PYTHONPATH. Вы также можете посмотреть на первую строку вbin/package
, чтобы увидеть, указывает ли ее шебанг на правильный питон. - person tdelaney   schedule 05.12.2015program
и просматривает модульsys
, чтобы увидеть такие вещи, как версия и что находится вsys.path
. - person tdelaney   schedule 05.12.2015