Python,如何导入子目录中的模块?

Jak*_*ake 2 python flask

我正在使用Python和Flask来构建一个项目.

如何导入子目录中的模块?

这是目录结构.

/application
  /apis
    settings.py
index.py
Run Code Online (Sandbox Code Playgroud)

这是index.py文件.

from flask import Flask
import os
import sys
import random
from flask import render_template, request, jsonify, redirect, url_for, send_file, Response, make_response
from werkzeug import secure_filename

app = Flask(__name__)
app.debug = True

sys.path.append("apis")
import settings
Run Code Online (Sandbox Code Playgroud)

这是apis文件夹中的settings.py文件.

from flask import Flask
import pymongo
import datetime
import os
import sys
import random
from flask import render_template, request, jsonify, redirect, url_for, send_file, Response, make_response
from werkzeug import secure_filename

app = Flask(__name__)
app.debug = True

## About Us
@app.route('/apis/settings/aboutus')
def aboutus():
    return render_template('aboutus.html')
Run Code Online (Sandbox Code Playgroud)

所以,我尝试使用sys.path.append导入设置模块.

当所有代码都在index.py中时,它运行正常.

如果我点击这个地址http://domain.com:5000/apis/settings/aboutus,它应该显示AboutUS页面.

但是,在我拆分模块后,它说"404 Not Found".

你能看到问题吗?

Jam*_*lls 5

您需要创建一个"包".基本上是包含的目录__init__.py.

通常你可以(天真地)做这样的事情:

$ mkdir foo
$ touch foo/__init__.py
Run Code Online (Sandbox Code Playgroud)

但是,"foo"必须在sys.path.

有关详细信息,请参阅:http://docs.python.org/2/tutorial/modules.html.