使用Docker时未找到Python模块

使用Docker时未找到Python模块,python,docker,Python,Docker,我有一个角度瓶应用程序,我正试图Dockerize。 使用的Python文件之一是名为trial.py的文件。此文件使用名为\u-trial.pyd的模块。当我在本地运行项目时,一切正常。但是,当我使用下面的代码进行dockerize并运行时,会出现错误“Module\u trial not found” 我哪里做错了?我是否需要更改dockerfile中的某些路径 编辑: 目录结构: 应用程序[包含src角度文件的文件夹] 静态[包含js文件的文件夹] 模板[带有index.html的文件夹

我有一个角度瓶应用程序,我正试图Dockerize。 使用的Python文件之一是名为trial.py的文件。此文件使用名为\u-trial.pyd的模块。当我在本地运行项目时,一切正常。但是,当我使用下面的代码进行dockerize并运行时,会出现错误“Module\u trial not found”

我哪里做错了?我是否需要更改dockerfile中的某些路径

编辑: 目录结构:

  • 应用程序[包含src角度文件的文件夹]
  • 静态[包含js文件的文件夹]
  • 模板[带有index.html的文件夹]
  • _试用版
  • app.py[执行的起点]
  • Dockerfile
  • package.json
  • requirements.txt
  • 试用版
app.py调用trial.py(成功)

trial.py需要_trial.pyd。我尝试使用import\u-trial调用它

它在本地工作正常,但当我将其dockerize时,会收到以下错误消息:

回溯(最近一次呼叫最后一次):

文件“app.py”,第7行,在

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