Как импортировать модели Django в сценарий, запущенный с помощью Popen()

Мой вопрос очень похож на этот . Разница в моем случае заключается в том, что скрипт python, который я хочу запустить как подпроцесс (listener1.py), является частью моего проекта, только на другом приложении.

Вот структура моего проекта:

my_project
    ├── my_app1 #This app contains models,views etc.
    │   ├── models.py
    │   └── apps.py
    │   └── ...
    ├── logic_app #This app contains several unrelated python scripts
    │   └── ManagerScript.py
    │   └── listener1.py
    │   └── ...
    

В моем apps.py:

class MyAppConfig(AppConfig):
    name = 'my_app1'
    def ready(self):
        #Once app is ready, start the following script as a thread
        thread = Thread(target=ManagerScript.main)
        thread.start()

В ManagerScript.py:

#This thread is responsible for starting listener1.py as a Subprocess
#(because this is a thread I can successfully import my Models here)
#from my_app1 import models #This would work!
        
tmp =  ['python3','path/to/listener1.py']
Popen(tmp, preexec_fn=os.setpgrp)

В listener1.py:

from my_app1 import models #Does not work!
...

Мой вопрос в том, что учитывая тот факт, что подпроцесс listener1.py находится в папке logic_app, как я могу импортировать мой Models в сценарий listener1.py без использования команд управления ? (Потому что их использование потребует изменения моей текущей структуры проекта)

Вы можете запускать их через оболочку Django. Не записывая их как команду.

Python manage.py shell
exec(open(<path-to-file>).read()))
Вернуться на верх