pyinstaller не создает рабочий исполняемый файл при использовании многопроцессорного модуля в Linux - PullRequest
0 голосов
/ 14 мая 2018

Я создал небольшой пример, чтобы продемонстрировать ошибку, которую я вижу, пытаясь использовать pyinstaller для сборки исполняемой программы. Мой Python 3.6.5 и установлен / home / repos / ges / Python / bin. Я не был уверен, что нестандартная установка Python играет важную роль в ошибке.

import time
import random
from multiprocessing.dummy import Pool as ThreadPool


# A function to run against a list
def this_job(job):

time_delay = random.randrange(0, 5)
time.sleep(time_delay)

print("after a small " + str(time_delay) + " second delay here is job " + str(job))


forked_jobs = []
for i in range(500):
    forked_jobs.append(i)


# Make the Pool of workers and do the work
pool = ThreadPool(10)
pool.map(this_job, forked_jobs)
# close the pool and wait for the work to finish
pool.close()
pool.join()

Я могу запустить файл с того места, где я его написал, и увидеть вывод, похожий на:

после небольшой 0-секундной задержки вот работа 52

после небольшой 0-секундной задержки вот работа 117

после небольшой 1-секундной задержки вот работа 39

после небольшой 1-секундной задержки вот работа 65 ...

Когда я пытаюсь построить это с помощью ./python3 pyinstaller bp2.py и запускаю исполняемый файл в папке dist, я вижу следующую ошибку.

Traceback (последний вызов был последним): Файл "site-packages / PyInstaller / loader / rthooks / pyi_rth_multiprocessing.py", строка 8, в Файл "/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", строка 631, в exec_module exec (байт-код, модуль. dict ) Файл "multiprocessing / spawn.py", строка 19, в от . утилита импорта Файл "/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", строка 631, в exec_module exec (байт-код, модуль. dict ) Файл "multiprocessing / util.py", строка 17, в из подпроцесса импорта _args_from_interpreter_flags Файл "/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", строка 631, в exec_module exec (байт-код, модуль. dict ) Файл "subprocess.py", строка 136, в Файл "/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", строка 714, в load_module module = loader.load_module (полное имя) Ошибка ImportEr: /home/repos/ges/Python/GES_Module/dist/bp2/_posixsubprocess.so: неопределенный символ: _Py_set_inheritable_async_safe [15670] Не удалось выполнить скрипт pyi_rth_multiprocessing

Не уверен, как решить.

1 Ответ

0 голосов
/ 23 мая 2018

Похоже, я получаю эту ошибку в результате моего расположения сборки Python.Я протестировал вышеупомянутое на машине с python, установленным в типичном месте, и он работает как положено.

...