|
python3.4.4. 在原程序的前面添加下面这段代码, 打包成的单个exe可以正常工作
- import multiprocessing.popen_spawn_win32
- import os
- import sys
- class _Popen(multiprocessing.popen_spawn_win32.Popen):
- def __init__(self, *args, **kw):
- if hasattr(sys, 'frozen'):
- os.putenv('_MEIPASS2', sys._MEIPASS + os.sep)
- try:
- super(_Popen, self).__init__(*args, **kw)
- finally:
- if hasattr(sys, 'frozen'):
- if hasattr(os, 'unsetenv'):
- os.unsetenv('_MEIPASS2')
- else:
- os.putenv('_MEIPASS2', '')
- class Process(multiprocessing.Process):
- _Popen = _Popen
复制代码
看起来你使用的是python2.x , 大概应该用下面这段代码
- import multiprocessing.forking
- import multiprocessing.pool
- import os
- import sys
- class _Popen(multiprocessing.forking.Popen):
- def __init__(self, *args, **kw):
- if hasattr(sys, 'frozen'):
- os.putenv('_MEIPASS2', sys._MEIPASS + os.sep)
- try:
- super(_Popen, self).__init__(*args, **kw)
- finally:
- if hasattr(sys, 'frozen'):
- if hasattr(os, 'unsetenv'):
- os.unsetenv('_MEIPASS2')
- else:
- os.putenv('_MEIPASS2', '')
-
- class Process(multiprocessing.Process):
- _Popen = _Popen
- class Pool(multiprocessing.pool):
- Process = Process
复制代码 |
|