Я создаю веб-сайт с использованием Python Flask (для ответа на вопрос не требуется знание колбы). На моем компьютере я использую Python 2.7.15, и приложение работает нормально. Когда я перемещаю его на свой веб-сервер Ubuntu с python 2.7.15rc1, он перестает работать. Я использую несколько циклический импорт, но я убедился, что все работает (я могу справиться с циклическим импортом очень хорошо). Это обратная связь:
Traceback (most recent call last):
File "/var/www/OpenNoteFlask/opennoteflask.wsgi", line 7, in <module>
from OpenNoteFlask import app as application
File "/var/www/OpenNoteFlask/OpenNoteFlask/__init__.py", line 1, in <module>
from OpenNoteFlask import create_app
File "/var/www/OpenNoteFlask/OpenNoteFlask/OpenNoteFlask/__init__.py", line 11, in <module>
from OpenNoteFlask.config import Config
ImportError: No module named config
Это моя файловая структура:
(The numbers in parenthesis are to distinguish the files and folders here.
They do not appear in the actual names of the files and folders)
OpenNoteFlask (1)
__init__.py (1)
OpenNoteFlask (2)
__init__.py (2)
config.py
Внутри __init__.py (1)
У меня есть from OpenNoteFlask import create_app
(и он успешно находит импорт).
Внутри __init__.py (2)
У меня есть from OpenNoteFlask.config import Config
(и импорт не найден). Опять же, это происходит только на моем веб-сервере Ubuntu, а не на моем ПК.
Я уже пробовал:
import sys
sys.path.insert(0, "path to parent of OpenNoteFlask (2)")
from OpenNoteFlask.config import Config
Но это ничего не меняет.
Повторюсь, у меня есть пакет OpenNoteFlask
, где у меня есть файл __init__.py
, который импортирует тот же самый модуль OpenNoteFlask
пакета config.py
, но он не может найти этот модуль. Это происходит только на моем веб-сервере Ubuntu, который работает с Python 2.7.15rc1, но отлично работает на моем ПК с Python 2.7.15.
Почему это происходит и как я могу это исправить или обойти?
РЕДАКТИРОВАТЬ: Решение
Я не думал прямо, называя все одинаково. Здесь была проблема, как было указано в комментариях:
На моем ПК это структура файла:
OpenNote
__init__.py
OpenNoteFlask
__init__.py
config.py
На моем веб-сервере это структура файла:
OpenNoteFlask
__init__.py
OpenNoteFlask
__init__.py
config.py
Проблема закончилась тем, что, поскольку у меня есть пакет с именем OpenNoteFlask
внутри пакета с именем OpenNoteFlask
, импорт from OpenNoteFlask ...
был неоднозначным. Python интерпретировал этот импорт как импорт из родительского пакета, а не из подпакета. Решением было сделать разные имена пакетов (как на моем ПК).