2016-01-18 43 views
4

成功完成pythonanywhere flask tutorial(pa.com)後,Miguel Grinberg的「Flask Mega Tutorial」(fmt)被召喚出來。可悲的是,我甚至沒有把它做成「你好,世界」。下面是我做了什麼:在pythonanywhere上初始設置Flask Mega教程

在pa.com試圖FMT逐字遵循的是一個沒有去:

python3 -m venv flask 

導致的

ensurepip is not available 

錯誤,我們沒有sudo訪問。

我堅信,所有Miguel要求我們做的就是將我們在pa.com教程(flask_app.py)中的一個文件中看到的功能分發到幾個文件中,這些文件將使完整應用程序的構建更容易。由於pa.com已經使用flask和python 3.4設置了我的基本Web應用程序,因此無法設置虛擬環境。似乎並不是一個障礙,至少不是一開始。

根據pa.com(pwd - > home/{username}/microblog)的基本目錄中的fmt,這是成功生成pa.com教程頁的flask_app.py文件所在的位置 - 我建立apptmp目錄,並創建app/__init__.pyapp/views.pyrun.py文件的指導下FMT

擊中應用頁面(run.py在主目錄中唯一的文件)會在頁面上未處理的異常。

將名稱更改爲flask_app.py(這似乎是pa.com在安裝瓶子時所期望的)會生成相同的錯誤。

修改flask_app.py代碼的所述內容:

from flask import Flask 
app = Flask(__name__) 
@app.route('/') 
def hello_world(): 
    return "working from flask_app.py" 

生成從該應用中一個成功的輸出,而具有在一個文件名爲run.py相同的代碼生成相同的未處理的異常錯誤。

行:

兩個run.py和views.py from app import app__init__.py


from app import views都讓我懷疑......這哪裏是 「應用程序」 模塊是從哪裏來的?但除了被這個問題困擾之外,沒有其他關於如何從這裏開始的想法。有什麼建議麼?真的很想在pa.com上設置,並通過本教程/書籍工作。

感覺像我缺少一些基本的東西,但不知道是什麼。

+0

堆棧跟蹤。 – Miguel

+0

PythonAnywhere dev(以及我們的Flask教程的作者)在這裏:-) PythonAnywhere使用WSGI文件中的代碼定位Flask應用程序 - 在「Web」選項卡上有一個鏈接。如果你看看那裏,你會看到一些代碼從模塊'flask_app'中導入一個名爲'application'的變量。改變這個以匹配你的新結構應該至少修復一些錯誤。 BTW堆棧跟蹤(如Miguel所要求的)位於Web應用程序的錯誤日誌中,也從「Web」選項卡鏈接。 –

+0

感謝Giles&Miguel - 我有多個項目在我的{用戶名} .pythonanywhere.com網站上運行,並使用git分支來輕鬆切換。 virtualenv選項存在,但尚未探索。我正在推進修改教程,使用pa.com開箱即可,並且a)通過它併發布我在這裏製作的mod,以防其他人希望做同樣的事情或b)被卡住並推下virtualenv路徑併發布我在這裏找到的內容。 感謝你們兩位幫忙,並會在未來更新。 - md – michaeldayreads

回答

5

第一條規則是:don't use app.run() on PythonAnywhere - 這就是run.py試圖去做的事情。這對您自己的PC來說很好,但在PA上會導致錯誤。將文件放在那裏很好,但不要在wsgi配置文件中嘗試導入該文件。

相反,你只需要導入變量瓶app,Miguel讓你把它放在app/__init__.py(這有點混亂,一個名爲app的變量和一個名爲app的文件夾,但我們可以處理它!)

要做到這一點,您需要將包含應用程序文件夾的文件夾添加到您的sys.path中。您還需要應用程序變量「重命名」,以application你導入:

# assuming we have /home/myusername/microblog/app/__init__.py: 
path = '/home/myusername/microblog' 
if path not in sys.path: 
    sys.path.append(path) 

# now we can import the app variable from the app folder's __init__ 
# and rename it to application 
from app import app as application 

更多信息:一個brief guide to flask on pythonanywhere和你將是有益的錯誤(或多個)的guide to debugging imports and sys.path problems in your pythonanywhere wsgi file