Ошибка импорта модуля в мое приложение Flask - PullRequest
0 голосов
/ 23 мая 2019

Я делаю колбу на сервере apache под управлением Ubuntu 16.04.6. У меня очень странная проблема с импортом модуля. Мой 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 и * 1014 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

Что странно, когда я захожу в этот каталог (тот, в котором находится мое приложение фляги) и запускаю 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 и, конечно же, обновление частей кода с учетом этого изменения остановило возникновение ошибки.

...