Python 2 脚本到 Docker 容器中的 Python 3 :: "No module named 'Queue'"



我有一个Python 2脚本,我试图在最新的Python docker容器内运行。该容器支持Python 3,我认为可以手动调整脚本。我的手动调整工作得很好……除了这个:

最初的Python 2脚本包含这一行:

from multiprocessing import Queue, Manager, Lock

但是感谢这样的帖子和这样的帖子,我知道"不是Python 3模块;我需要的模块是"queue"所以我把代码改成这样:

import queue
from multiprocessing import Manager, Lock

当我启动我的容器,然后运行脚本(在容器内),我得到这个:

Traceback (most recent call last):
File "/usr/local/bin/myscript", line 4, in <module>
__import__('pkg_resources').run_script('myscript==0.1.0', 'myscript')
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 651, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/local/lib/python3.9/site-packages/pkg_resources/__init__.py", line 1455, in run_script
exec(script_code, namespace, namespace)
File "/usr/local/lib/python3.9/site-packages/myscript-0.1.0-py3.9.egg/EGG-INFO/scripts/myscript", line 21, in <module>
File "<frozen zipimport>", line 259, in load_module
File "/usr/local/lib/python3.9/site-packages/myscript-0.1.0-py3.9.egg/openbmp/myscript/logger.py", line 15, in <module>
ModuleNotFoundError: No module named 'Queue'

以上内容对我来说意义不大;下面是脚本的引用部分,包括行号:

15 import sys
16 import signal
17 #from multiprocessing import queue, Manager, Lock
18 import queue
19 from multiprocessing import Manager, Lock
20
21 from myscript.logger import LoggerThread

啊。Docker容器增加了一层额外的复杂性,我不明白这是怎么回事。

更有经验的程序员:这里有合适的修复吗?或者我应该放弃并使用Python 2 Docker容器?谢谢你。

在你的错误信息中显示;

ModuleNotFoundError: No module named 'Queue'

"Queue"不是Python 3模块;我需要的模块是"queue"

不知怎么的,你的代码仍然在运行这一行:

from multiprocessing import Queue, Manager, Lock

最新更新