我创建了一个小样本来演示错误我正在尝试使用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
经过一小秒的延迟后,这是工作65 ...当我尝试使用./python3 pyinstaller bp2.py构建它并在dist文件夹中运行可执行文件时,我看到以下错误。
追踪(最近一次通话): 文件“site-packages / PyInstaller / loader / rthooks / pyi_rth_multiprocessing.py”,第8行,in 在exec_module中输入文件“/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py”,第631行 exec(字节码,模块。字典) 文件“multiprocessing / spawn.py”,第19行,in 来自。 import util 在exec_module中输入文件“/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py”,第631行 exec(字节码,模块。字典) 文件“multiprocessing / util.py”,第17行,in 从子进程导入_args_from_interpreter_flags 在exec_module中输入文件“/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py”,第631行 exec(字节码,模块。字典) 文件“subprocess.py”,第136行,in 在load_module中输入文件“/home/repos/ges/Python/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py”,第714行 module = loader.load_module(fullname) ImportError:/home/repos/ges/Python/GES_Module/dist/bp2/_posixsubprocess.so:未定义的符号:_Py_set_inheritable_async_safe [15670]无法执行脚本pyi_rth_multiprocessing
不确定如何解决。
答案 0 :(得分:0)
看来我的python构建位置导致了这个错误。我在一台安装了典型位置的python的机器上测试了上述内容,它按预期工作。