簡體   English   中英

python3:在'app.py'中找不到'__main__'模塊

[英]python3: can't find '__main__' module in 'app.py'

我正在嘗試創建一個Docker容器,以便能夠使用Flask創建GUI以利用張量流模型。 問題是我希望能夠實時修改我的python文件而不必每次都重建我的容器。

所以現在我已經創建了3個文件:

requirement.txt

Flask
tensorflow
keras

Dockerfile

# Use an official Python runtime as a parent image
FROM python:3.5.6-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python3", "app.py"]

app.py

from flask import Flask
import os
import socket

app = Flask(__name__)

@app.route("/")
def test():
html = "<h3>Hello {name}!</h3>" \
       "<b>Hostname:</b> {hostname}<br/>"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname())

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

所以在這之后我用這個命令構建我的容器

docker build -t modelgui .

結束然后我使用此命令來運行我的容器並在我要在主機上修改的應用程序文件和容器中的應用程序文件之間建立鏈接

docker run -p 4000:80 -v /home/Documents/modelGUI:/app modelgui

但我得到這個錯誤,我真的不知道為什么

/usr/local/bin/python3: can't find '__main__' module in 'app.py'

我的問題可能是愚蠢的解決,但我真的被困在這里。

在本地運行,看起來安裝卷會覆蓋您的目錄:

沒有音量

docker run -it test_image bash
root@c3870b9845c3:/app# ls
Dockerfile  app.py  requirements.txt
root@c3870b9845c3:/app# python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

隨着音量

docker run -it -v ~/Barings_VSTS/modelGUI:/app test_image bash
root@f6349f899079:/app# ls
somefile.txt
root@f6349f899079:/app#

這可能是問題的一部分。 如果要掛載文件系統,我會將其掛載到不同的目錄中。 默認的卷行為使得復制到app中的任何內容都將被modelGUI的內容覆蓋

檢查綁定卷裝入中的/ home / Documents / modelGUI是代碼文件所在的路徑,並且該路徑中的app.py不是作為目錄而不是帶有您要運行的代碼的python文件創建的。

如果app.py/ home /文檔/ modelGUI是一個目錄,那么這個問題的原因是沒有調用腳本app.py可言,你只是給Python解釋器不存在的腳本名稱,這情況下,存在類似命名的目錄(實際上不區分大小寫),它會嘗試執行它。

我試圖復制:

$ ls -lFs
Dockerfile
app.py/
requirements.txt

然后使用app.py調用Python解釋

$ python3 app.py
/usr/local/bin/python3: can't find '__main__' module in 'app.py'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM