简体   繁体   中英

Import own python files in docker container - Import Error

I am having a flask server in a docker container and wanna actually import some of my own python files also on this server. Everytime I am trying this I am getting a "ImportError: cannot import name 'ACCESS_DEFAULT'.

I found already question about a similiar issue here ( Importing python file in docker container ) on stackoverflow but I am struggeling to get it working.

The error statement looks like this:

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

My fow my project structure looks like:

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

And my Dockerfile configuration is here:

# 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" ]

Do you have some hints what I am doing wrong in this case? I assume it is having something to do with the structure of the files in the Dockerfile.

You are using a Python 3.6 image but the ACCESS_DEFAULT constant was added to the mmap module in Python 3.7.

From the docs :

Changed in version 3.7: Added ACCESS_DEFAULT constant

Either change the image to a Python 3.7 image:

FROM python:3.7-alpine

or don't use mmap.ACCESS_DEFAULT .

You are using python-3.6.8 but ACCESS_DEFAULT has been added to mmap in Python 3.7. Try to update Python version in the Dockerfile (FROM line)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM