Приложение Python3, вызывающее скрипт Python2 через подпроцесс, делает модуль логирования ошибочным - PullRequest
1 голос
/ 04 октября 2019

Это странный вопрос ...

Я разрабатываю базовое приложение Python3 (MY_APP), которому нужно в какой-то момент вызвать другое приложение Python (REQ_APP).

MY_APP может использовать любую версию Python3, хотя REQ_APP может использовать только Python2.7 или Python3.4. Это происходит потому, что он загружает библиотеки, связанные с библиотеками разработки Python2.7 или Python3.4.

Я не хочу, чтобы это приложение было доступно только через виртуальную среду, поэтому я не вижу другого варианта, кроме вызова REQ_APP смой установленный Python2.7 через вызов подпроцесса без MY_APP.

Зная, что MY_APP использует модуль журналирования, а также REQ_APP с другой конфигурацией, что приводит к некоторым странным сообщениям журналирования, таким как:

[MODCON] 2019-10-04 09:59:39 DEBUG format '{date} {time} - {id} - {maintype} - {msg}' -> '(?P<date>.+?) (?P<time>.+?) - (?P<id>.+?) - (?P<maintype>.+?) - (?P<msg>.+?)'

Это входящий вызов REQ_APP. Это определяет его собственную регистрацию, хотя это использует мою конфигурацию, которую я определил в MY_APP. Есть ли способ избежать этого конфликта? Можно ли сделать условную настройку модуля логирования в зависимости от файла звонящего? Обратите внимание, что поскольку REQ_APP не мой, я не могу изменить исходный код, даже если я его вижу!

...