У меня есть скрипт, который я выполняю с одним переводчиком (из одного венва). Мне нужно вызвать другой сценарий в потоке с другим интерпретатором (также venv), но по какой-то причине он дает мне
ModuleNotFoundError: No module named 'module_name'
Пока я делаю это так:
th = threading.Thread(target=os.system, args=(params,))
th.start()
Я пытался установить зависимости интерпретатора вызываемого абонента в зависимости от вызывающего абонента.
Я также пытался добавить
source /path/to/venv/bin/activate;
в params
, но ни один из них не помог мне.
Я тоже пытался сделать
sys.path.append('/path/to/the/caller/script')
Но эффекта не было. Любые идеи, как это исправить?
обн. Добавленный пример:
# caller.py
import threading
import os
th = threading.Thread(target=os.system, args=('/path/to/flask/app.py',))
th.start()
# callee.py
#!/usr/bin/python3
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
Если вы выполните caller.py с чистым интерпретатором python3, у вас будет
Traceback (most recent call last):
File "/path/to/flask/app.py", line 3, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
, поскольку в нем нет flask вызывающий venv