我在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版本