我有一个Python 2脚本,我试图在最新的Python docker container中运行。那个容器支持Python 3,我认为可以手动调整脚本。我的手动调整工作得很好...除了这个:
原始Python 2脚本包含以下行:
from multiprocessing import Queue, Manager, Lock
但是感谢this和this这样的帖子,我知道“Queue”不是Python 3的模块;我需要的模块是“queue”。2所以我把我的代码修改成这样:
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
啊,码头集装箱增加了额外的复杂性,我不明白发生了什么。
更有经验的程序员:这里有合适的修复吗?或者我应该给予并使用Python 2 Docker容器?谢谢。
1条答案
按热度按时间qhhrdooz1#
在您的错误消息中它说;
"Queue"
不是Python 3的模块;我需要的模块是"queue"
不知何故,您的代码仍然在运行这一行: