2
나는 setuptools에서 배포 한 python 스크립트를 작성했습니다. 나는이 스크립트 내부 multiprocess.Process를 사용하지만, 내가 배치 스크립트를 시작하는 경우이 오류 메시지와 함께 실패합니다 다중 처리 사용. setuptools가 설치 한 스크립트 내에서 처리
Traceback (most recent call last):
File "C:\Python34\Scripts\process_demo.py", line 4, in <module>
__import__('pkg_resources').run_script('procdemo==1.0', 'process_demo.py')
File "C:\Python34\lib\site-packages\setuptools-5.4.1-py3.4.egg\pkg_resources.py", line 534, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "C:\Python34\lib\site-packages\setuptools-5.4.1-py3.4.egg\pkg_resources.py", line 1445, in run_script
"Can't perform this operation for unregistered loader type"
File "C:\Python34\lib\site-packages\procdemo-1.0-py3.4.egg\EGG-INFO\scripts\process_demo.py", line 19, in <module>
File "C:\Python34\lib\site-packages\procdemo-1.0-py3.4.egg\EGG-INFO\scripts\process_demo.py", line 14, in main
File "C:\Python34\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Python34\lib\multiprocessing\context.py", line 212, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Python34\lib\multiprocessing\context.py", line 313, in _Popen
return Popen(process_obj)
File "C:\Python34\lib\multiprocessing\popen_spawn_win32.py", line 34, in __init__
prep_data = spawn.get_preparation_data(process_obj._name)
File "C:\Python34\lib\multiprocessing\spawn.py", line 173, in get_preparation_data
main_mod_name = getattr(main_module.__spec__, "name", None)
AttributeError: 'module' object has no attribute '__spec__'
내가 더 multiprocessing.Process의 전화보다 아무것도 짧은 테스트 파일을 생성하고, 문제는 분명히 거기에.
process_demo.py
import multiprocessing
def worker():
print("foooo")
def main(threads=4):
procs = []
for i in range(threads):
p = multiprocessing.Process(target=worker)
procs.append(p)
p.start()
if __name__ == "__main__":
multiprocessing.freeze_support()
main()
설치 파일 :
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup
setup(name='procdemo',
version='1.0',
description='Some Demo',
scripts=['bin/process_demo.py'],
)
어떻게 안전하게 setuptools에를 파괴하지 않고 스크립트 내부 프로세스를 시작할 수 있습니까?