Skip to main content
 首页 » 编程设计

python之Flask 应用程序在部署到 pythonanywhere 时无法运行

2025年05月04日23JeffreyZhao

我正在开发一个调用电影数据库的网络应用程序。在本地主机上运行时一切正常。我正在尝试将它部署在 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 上不可用。只有 models、templates 等是。

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 导入相对于自身的包(即 import models)。

资料来源:我的很多应用程序都使用 PythonAnywhere :)

Here is some further reading on regular Python packages .