windows上的Python3多处理:模块“优main”没有属性“\uu spec”

2024-06-02 13:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个基于flask的UI服务器,它以自己的进程运行,在Linux和Mac上运行很好,但是当尝试在Windows上运行时,它会异常,似乎是因为Windows只有spawn方法,而我的代码并不真正支持它。它失败,但出现以下异常:

File "C:\Python36-32\Scripts\bibliopixel", line 4, in <module> __import__('pkg_resources').run_script('BiblioPixel==3.0.6', 'bibliopixel') File "C:\Python36-32\lib\site-packages\pkg_resources\__init__.py", line 743, in run_script self.require(requires)[0].run_script(script_name, ns) File "C:\Python36-32\lib\site-packages\pkg_resources\__init__.py", line 1498, in run_script exec(code, namespace, namespace) File "c:\python36-32\lib\site-packages\bibliopixel-3.0.6-py3.6.egg\EGG-INFO\scripts\bibliopixel", line 15, in <module> main.main() File "C:\Python36-32\lib\site-packages\bibliopixel-3.0.6-py3.6.egg\bibliopixel\main\main.py", line 46, in main result = run(args, presets) or 0 File "C:\Python36-32\lib\site-packages\bibliopixel-3.0.6-py3.6.egg\bibliopixel\main\run.py", line 36, in run task.start() File "C:\Python36-32\lib\site-packages\bibliopixel-3.0.6-py3.6.egg\bibliopixel\remote\control.py", line 126, in start self.server.start() File "C:\Python36-32\lib\multiprocessing\process.py", line 105, in start self._popen = self._Popen(self) File "C:\Python36-32\lib\multiprocessing\context.py", line 223, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "C:\Python36-32\lib\multiprocessing\context.py", line 322, in _Popen return Popen(process_obj) File "C:\Python36-32\lib\multiprocessing\popen_spawn_win32.py", line 33, in __init__ prep_data = spawn.get_preparation_data(process_obj._name) File "C:\Python36-32\lib\multiprocessing\spawn.py", line 172, in get_preparation_data main_mod_name = getattr(main_module.__spec__, "name", None) AttributeError: module '__main__' has no attribute '__spec__'

我对MP的理解是,它希望能够整体运行一个模块,但是如果你让它从另一个模块导入一个函数,它应该可以正常工作。。。由于所有这些都深深地隐藏在一个完整的包中,我真的找不到一个好的方法来通过一个带有适当的if __name__ == "__main__"部分的模块来启动这些功能。在

该过程在此处生成:

https://github.com/ManiacalLabs/BiblioPixel/blob/4cb8cda5e65aba8a512bd679915812e027d76710/bibliopixel/remote/control.py#L44

在这里调用函数:

https://github.com/ManiacalLabs/BiblioPixel/blob/4cb8cda5e65aba8a512bd679915812e027d76710/bibliopixel/remote/server.py#L77

我是新来的议员,所以我可能只是错过了一些愚蠢的东西,但我不知道是什么:p


Tags: runnameinpyselfmainlibpackages