簡體   English   中英

找不到“__main__”模塊

[英]can't find '__main__' module

我需要一些幫助。 我從 Ubuntu 18.04.05 LTS 終端(輸入 python filename.py )運行下面的代碼(使用 Python 3.7),我可以在網頁上查看結果( http://127.0.0.1:500/

但是,當我使用 Spyder (v4.1.4) 運行代碼時,當我包含代碼行 app.config["DEBUG"] = True; 時遇到以下錯誤; 或者,當我在if __name__ =='__main__'語句中包含代碼行 app(debug = True) 時,也會發生同樣的事情。

如果我刪除這條線,事情就行了。

這個問題之前可能已經回答過,但我無法從答案中解開解決方案。

app = Flask(__name__)   
app.config["DEBUG"] = True  

@app.route('/')       
def hello(): 
    return 'HELLO'

if __name__=='__main__': 
   #app.debug = True
   app.run()

這是 Python 3.7 解釋器的輸出:

* Serving Flask app "__main__" (lazy loading)
* Environment: production
  WARNING: This is a development server. Do not use it in a production deployment.
  Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with inotify reloader
/home/name/anaconda3/bin/python: can't find '__main__' module in /home/name/Documents     /name/Contents/Python/flask_project/api'

An exception has occurred, use %tb to see the full traceback.

SystemExit: 1

/home/name/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3425:    UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

%tb

回溯(最近一次調用最后一次):

文件“”,第 3 行,在 app.run() 中

文件“/home/name/anaconda3/lib/python3.7/site-packages/flask/app.py”,第 990 行,運行 run_simple(host, port, self, **options)

文件“/home/name/anaconda3/lib/python3.7/site-packages/werkzeug/serving.py”,第1050行,在run_simple run_with_reloader(inner, extra_files, reloader_interval, reloader_type)

文件“/home/name/anaconda3/lib/python3.7/site-packages/werkzeug/_reloader.py”,第339行,在run_with_reloader sys.exit(reloader.restart_with_reloader())

系統退出:1

這可能是因為您使用 anaconda3 作為主要解釋器。 我的系統中安裝了 Anaconda,每當我在使用 Flask 時將其用作主要解釋器時,都會出現很多錯誤。 我建議您不要使用 Anaconda 並使用虛擬環境並使用“vanilla”python。

pip install virtualenv

與其他框架不同,flask 需要一些設置才能做事。 由於它需要設置,因此需要一個虛擬環境。 那么,這個 virtualenv 有什么作用呢? 它執行名稱所指的任務,通過在子文件夾中安裝 python 以及項目中可能需要的其他必要內容來創建虛擬環境。

完成后,創建一個文件夾作為測試項目,而不是創建單個文件。 之后,創建一個虛擬環境:

virtualenv name-of-the-sub-folder

名稱可以是任何東西,我的工作流程總是將其命名為env

安裝完成后,通過執行以下操作激活虛擬環境:

source name-of-the-sub-folder/bin/activate

您可能會注意到您的終端與您的虛擬環境目錄具有相同的詞,這是正常的,並且這也表明您實際上已經激活了它。 如果您遇到任何問題,請參考:

如何激活virtualenv?

https://flask.palletsprojects.com/en/1.1.x/installation/

https://youtu.be/Z1RJmh_OqeA

好的,下一步是創建python文件。 你可以app.py命名它,對我來說,我將它命名為app.py (注意:如果您使用的是 spyder,請將您的項目解釋器更改為您的項目文件所在的 python.exe。或者,如果您使用的是文本編輯器,請使用激活的終端運行代碼python app.py

完成后,返回您用來激活虛擬環境的終端並執行以下操作:

pip install flask

這將在您的虛擬環境中安裝框架,而不是在您的系統中。 完成后,粘貼您用於測試燒瓶的相同代碼或使用下面粘貼的代碼:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == "__main__":
    app.run(debug=True)
    if not os.path.exists('db.sqlite'):
        db.create_all()

暫無
暫無

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

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