我正在开发一个调用电影数据库的网络应用程序.当它在localhost上运行时,一切运行正常.我正试图在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
Run Code Online (Sandbox Code Playgroud)
至少从我得到的错误消息看来它已经找到了文件.当我尝试加载页面时,它无法运行.看来由于某种原因,代码不会导入我自己的函数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
Run Code Online (Sandbox Code Playgroud)
我是否需要更改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
Run Code Online (Sandbox Code Playgroud)
由于您设置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 :)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |