在docker容器中导入自己的python文件-导入错误



我在docker容器中有一个flask服务器,我想在这个服务器上实际导入一些我自己的python文件。每次我尝试这个,我得到一个" importterror:不能导入名称'ACCESS_DEFAULT'。

我已经在stackoverflow上发现了一个类似的问题(在docker容器中导入python文件),但我正在努力让它工作。

错误语句如下:

Attaching to g2_app_1
app_1  | Traceback (most recent call last):
app_1  |   File "app.py", line 4, in <module>
app_1  |     from inferenceMachine import calculateRouteAndNavigateMBot
app_1  |   File "/environmentservice/inferenceMachine.py", line 3, in <module>
app_1  |     from mBotControlPy.pathToNavigationConverting import convertPathToNavigationCommands
app_1  |   File "/environmentservice/mBotControlPy/pathToNavigationConverting.py", line 3, in <module>
app_1  |     from mmap import ACCESS_DEFAULT
app_1  | ImportError: cannot import name 'ACCESS_DEFAULT'
g2_app_1 exited with code 1

我的项目结构看起来像:

|-Dockerfile
|-app.py
|-requirements.txt
|-inferenceMachine.py
|_
mBotControlPy
|-mBotControl.py
|-pathToNavigationConverting.py
|_
intelligentPathFindingPy
|-pathFindingAlgorithm.py

和我Dockerfile配置:

# start from base
#FROM ubuntu:18.04
FROM python:3.6.8-alpine
LABEL maintainer="Group2"
#RUN apt-get update -y && 
#    apt-get install -y python-pip python-dev

COPY ./requirements.txt /environmentservice/requirements.txt
#ADD intelligentPathFindingPy /environmentservice/intelligentPathFindingPy
#ADD mBotControlPy /environmentservice/mBotControlPy
#COPY ./inferenceMachine.py /environmentservice/inferenceMachine.py
#COPY ./app.py /environmentservice/app.py
WORKDIR /environmentservice
RUN pip install -r requirements.txt
COPY . /environmentservice
CMD [ "python", "./environmentservice/app.py" ]
在这种情况下,你能给我一些提示吗?我认为这与Dockerfile中的文件结构有关。

您正在使用Python 3.6图像,但ACCESS_DEFAULT常量在Python 3.7中被添加到mmap模块。

From the docs:

在3.7版更改:添加ACCESS_DEFAULT常量

将图像更改为Python 3.7图像:

FROM python:3.7-alpine

或者不使用mmap.ACCESS_DEFAULT

您正在使用python-3.6.8,但ACCESS_DEFAULT已在Python 3.7中添加到mmap。尝试在Dockerfile (FROM行)中更新Python版本