python-3.x 在__init__.py中导入模块时,如何解决“500 Internal Server Error”?

gkl3eglg  于 2023-04-08  发布在  Python
关注(0)|答案(2)|浏览(169)

我第一次使用Flask。下面的__init__.py工作正常:
Python v3.10.6

#!/usr/bin/env python3

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/testurl')
def testurl():
    return render_template('index.html')

@app.route('/from_client', methods=['POST'])
def from_client():
    request_data = request.get_json()
    return request_data

if __name__ == '__main__':
    app.run()

我使用以下文件夹:

flaskApp
---- flaskApp
    ---- __init__.py
    ---- modules
        ---- mymodules.py
    ---- static
        ---- css
        ---- img
        ---- js
    ---- templates
        ---- index.html
---- flaskapp.wsgi

但是当我试图改变__init__.py从模块文件夹导入mymodules时,我得到了“500内部服务器错误”。
使用的代码:

#!/usr/bin/env python3

from flask import Flask, render_template, request
from modules import mymodules
app = Flask(__name__)

@app.route('/testurl')
def testurl():
    return render_template('index.html')

@app.route('/from_client', methods=['POST'])
def from_client():
    request_data = request.get_json()
    data_id = mymodules.somecode(request_data)
    return data_id

if __name__ == '__main__':
        app.run()

我觉得有一个问题,从如何导入工作。我试图使用

import sys
#sys.path.append('[pathoftheflaskfolder/flaskApp/flaskApp/modules')

不过也没什么用,我的Flask和Python水平有限,转来转去也没找到解决的办法,大家有什么想法尽管来!

roejwanj

roejwanj1#

看起来你的代码试图在模块本身内部导入模块。你应该使用相对导入来使它正确工作。

from .modules import mymodules
#    ^ this dot makes it relative to the current folder
yeotifhr

yeotifhr2#

要创建模块目录,文件夹需要一个__init__.py,这样Python就可以知道它是一个模块,而不仅仅是一个包含代码的文件夹。
将文件结构更改为以下格式:

flaskApp
---- flaskApp
    ---- __init__.py
    ---- modules
        ---- __init__.py  <-- NEW
        ---- mymodules.py
    ---- static
        ---- css
        ---- img
        ---- js
    ---- templates
        ---- index.html
---- flaskapp.wsgi

相关问题