将模块导入我的Flask应用程序时出错

时间:2019-05-23 00:13:53

标签: python apache flask import package

我正在运行Ubuntu 16.04.6的apache服务器上创建flask应用程序。导入模块时遇到一个非常奇怪的问题。我的包含我应用的 init .py开头

from flask import Flask, render_template, request, url_for, redirect, session, jsonify
import question_testing

我收到500错误,当我检查日志时,它说这是由于question_testing.py

question_testing.py始于:

from math_blocks.polynomials import polynomial
from math_blocks.quadratics import quadratic
from math_blocks.cubics import cubic

question_testing.py与 init .py位于同一目录中,而math_blocks也是该目录中的一个包(这意味着包含polynomials.py等的文件夹位于question_testing.py和 init .py)。

FlaskApp
-------- __init__.py
-------- question_testing.py
-------- math_blocks
-------------------- polynomials.py
-------------------- poly_terms.py

在math_blocks包中,多项式模块首先导入另一个math_blocks模块:

from math_blocks.poly_terms import poly_term as poly_term

根据日志,这是错误的出处。这是错误:

from FlaskApp import app as application
File "/var/www/FlaskApp/FlaskApp/__init__.py", line 4, in <module>,
import question_testing
File "/var/www/FlaskApp/FlaskApp/question_testing.py", line 1, in <module>,
from math_blocks.polynomials import polynomial
File "/var/www/FlaskApp/FlaskApp/math_blocks/polynomials.py", line 2
from math_blocks.poly_terms import poly_term as poly_term
ImportError: No module named math_blocks.poly_terms

奇怪的是,当我转到此目录(带有我的flask应用程序的目录)并从命令行运行python时,我可以导入math_blocks.polynomials没问题,我可以导入question_testing没问题,甚至拥有我的烧瓶应用程序的init .py。

>>> import __init__
>>> __init__.question_testing.polynomial
<class math_blocks.polynomials.polynomial at 0x7f29ad7646d0>

仅当我从浏览器发出请求后, init .py作为服务器运行时,才会发生此导入错误。

任何人都可以帮助我了解为什么我会收到此错误吗?

编辑-半解 我不知道为什么这行得通,但是将math_blocks中的导入更改为相对导入似乎已经解决了我的问题。

现在在polynomials.py中,我有:

from .poly_terms import poly_term

在整个math_blocks程序包中执行此操作,当然还要更新部分代码以适应此更改,从而阻止了错误的发生。

0 个答案:

没有答案