我是Docker的新手。当我运行docker容器时,Dockerfile中的最后一行如下所示:
CMD ["python3", "./poses/server/server_multithreaded.py"]
在上面描述的服务器\u multithread.py文件中,我正在导入另一个文件,如下所示:
from poses.poseapp.poseapp_sockets import PoseAppWSockets
当我使用命令docker run -p 8089:8089 zoheezus/capstone
运行container时,出现以下错误:
Traceback (most recent call last):
File "./poses/server/server_multithreaded.py", line 18, in <module>
from poses.poseapp.poseapp_sockets import PoseAppWSockets
ImportError: No module named 'poses'
据我所知,“poses”目录不可访问,或者我没有以正确的方式访问它运行server_multi threaded.py时,我需要做什么才能访问其他文件?
项目的文件结构如下所示:
Python不会将当前工作路径添加到模块搜索路径中,它只会将顶级脚本的路径添加到搜索路径中,当然也会搜索
PYTHONPATH
、sys path
等对于您的情况,将不搜索当前工作路径
/usr/pose_recognizer
,只搜索/usr/pose_recognizer/poses/server
。所以,它肯定找不到名为“poses”的模块要使其适合您,请提供一些选项:
选项1:作为模块执行
server_multithreaded.py
:选项2:将
server_multithreaded.py
中的sys.path
更改为from poses.poseapp.poseapp_sockets import PoseAppWSockets
之前的下一个:选项3:更改dockerfile:
这个问题很可能与docker无关,而是与PYTHONPATH环境变量(在docker容器中)有关。您必须确保
capstone-pose-estimation
在其中。此外,您应该使poses
和poseapp
成为一个包(包含__init___.py
),以便从中导入相关问题 更多 >
编程相关推荐