使用Docker时未找到Python模块
我有一个角度瓶应用程序,我正试图Dockerize。 使用的Python文件之一是名为trial.py的文件。此文件使用名为\u-trial.pyd的模块。当我在本地运行项目时,一切正常。但是,当我使用下面的代码进行dockerize并运行时,会出现错误“Module\u trial not found” 我哪里做错了?我是否需要更改dockerfile中的某些路径 编辑: 目录结构:使用Docker时未找到Python模块,python,docker,Python,Docker,我有一个角度瓶应用程序,我正试图Dockerize。 使用的Python文件之一是名为trial.py的文件。此文件使用名为\u-trial.pyd的模块。当我在本地运行项目时,一切正常。但是,当我使用下面的代码进行dockerize并运行时,会出现错误“Module\u trial not found” 我哪里做错了?我是否需要更改dockerfile中的某些路径 编辑: 目录结构: 应用程序[包含src角度文件的文件夹] 静态[包含js文件的文件夹] 模板[带有index.html的文件夹
- 应用程序[包含src角度文件的文件夹]
- 静态[包含js文件的文件夹]
- 模板[带有index.html的文件夹]
- _试用版
- app.py[执行的起点]
- Dockerfile
- package.json
- requirements.txt
- 试用版
from trial import *
文件“/root/trial.py”,第15行,在
进口试验
ModuleNotFoundError:没有名为“\u试用”的模块
运行的命令包括:
docker image build -t prj .
docker container run --publish 5000:5000 --name prj prj
更新
它能够识别其他.py文件,但不能识别.pyd模块。我认为这可能是由于以下原因 路径 确保所需文件位于pythonpath中。听起来你已经这么做了,所以这次可能不是 调试模式 如果使用调试模式,则需要将此模块“\u trail.pyd”重命名为“\u trail\u d.pyd” 缺少DLL .pyd文件可能需要dll或其他不可用的依赖项,因此无法导入。有一些工具,如depends.exe或depends.exe,允许您查找所需内容 名称空间问题 如果python路径中已经有一个名为“_trail.py”的文件,它可能会创建不需要的行为 解决了! 问题是我在Linux容器中使用了.pyd文件。但是,Linux似乎不支持.pyd文件。这就是为什么它无法检测到_trial.pyd模块的原因。我必须生成一个共享对象(.so)文件(即_-trial.so),它工作正常
编辑:这个.so文件是我在Linux系统上生成的。在Windows上生成.so,然后在Linux容器中使用它会出现“无效ELF头”错误。是。如何更改路径以检测到此文件。所有内容都已复制到应用程序文件夹,所以它不应该自动找到此文件吗?
docker image build -t prj .
docker container run --publish 5000:5000 --name prj prj