Я создаю приложение python3 для окон, которое опирается на wheel entry_points, потому что это простой способ получить исполняемые файлы .exe. Я использую venv (встроенный модуль виртуальной среды в python3). Я пытался найти другую точку входа excutalbe относительно моей собственной sys.prefix
. Это шло хорошо, пока я не переместил код в многопроцессорную обработку. Процесс для достижения параллелизма. Тогда я больше не мог найти свою точку входа. Оказывается, процесс mp.Process не создается интерпретатором venv. Вот код для воспроизведения проблемы:
import multiprocessing, sys
def run():
print("worker exe:",sys.executable)
if __name__ == '__main__':
print("main exe:",sys.executable)
multiprocessing.Process(target=run).start()
Вывод, который я получаю из этого: (в Windows 10)
main exe: C:\venv\Scripts\python.exe
worker exe: C:\Users\simon\AppData\Local\Programs\Python\Python37\python.exe
Таким образом, похоже, что многопроцессорный модуль выходит извиртуальная среда! Как я могу заставить процесс работать с переводчиком venv? Я попытался установить multiprocessing.set_executable без какой-либо удачи. Может ли это быть ошибкой в многопроцессорном модуле?