簡體   English   中英

Flask應用程序在部署到pythonanywhere時無法運行

[英]Flask app fails to run when deployed to pythonanywhere

我正在使用一個網絡應用程序來調用電影數據庫。 在本地主機上運行時,一切運行正常。 我正在嘗試在pythonanywhere上部署它。 我創建了一個虛擬環境並安裝了所有依賴項。 我相信我已經正確編輯了WSGI文件。

import sys
path = '/home/gcmatt/capstone/src'
if path not in sys.path
   sys.path.append(path)
from app import app as application

至少從我得到的錯誤消息中,它似乎已找到文件。 當我嘗試加載頁面時,它無法運行。 似乎由於某種原因,該代碼無法導入我自己的函數src.models.search。

2018-03-31 15:28:50,341: Error running WSGI application
2018-03-31 15:28:50,349: ModuleNotFoundError: No module named 'src'
2018-03-31 15:28:50,349:   File 
"/var/www/gcmatt_pythonanywhere_com_wsgi.py", line 82, in <module>
2018-03-31 15:28:50,349:     from app import app as application  # noqa
2018-03-31 15:28:50,349: 
2018-03-31 15:28:50,349:   File "/home/gcmatt/capstone/src/app.py", 
line 4, in <module>
2018-03-31 15:28:50,350:     from src.models.search import Search 

我是否需要在python代碼中更改文件結構或文件路徑才能運行該應用程序? 我在任何地方都遵循了有關python的教程,並認為我已經正確設置了所有內容。

這是我的目錄結構

capstone/
|--.git/
|--src/
   |models/
    |--__init__.py
    |--results.py
    |--search.py
  |--templates
    |--base.html
    |--home.html
    |--noresults.html
    |--search.html
  |--__init__.py
  |--api_file.txt
  |--app.py
  |--requirements.txt

由於您設置path = '/home/gcmatt/capstone/src' ,因此src模塊在path上不可用。 只有modelstemplates等。

Python只會在可以看到其中帶有__init__.py子目錄的情況下識別包。 無論當前目錄是否具有__init__.py ,它都不會將當前目錄識別為包。

嘗試設置path = '/home/gcmatt/capstone' ,它應該能夠檢測到軟件包src

在這里編輯:您可能還想說from src.app import app as application

在這里進行第二次編輯:在app.py您還應該將導入更改為導入子包,而不是src.[something] 例如: from models.search import Search 您的WSGI將看到src包,並src.app導入src.app 然后src.app導入相對於自身的包(即import models )。

來源:我的許多應用程序都使用PythonAnywhere :)

這是對常規Python包的進一步閱讀

暫無
暫無

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

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