Не может заставить Python импортировать из другой папки

Эхо так девяносто и настолько чревато опасностями, что его использование должно привести к дампам ядра не менее 4 ГБ. Серьезно, проблемы эха были причиной того, что процесс стандартизации Unix, наконец, придумал утилиту printf, устраняя все проблемы.

Итак, чтобы получить строку новой строки в строке:

FOO="hello
world"
BAR=$(printf "hello\nworld\n") # Alternative; note: final newline is deleted
printf '<%s>\n' "$FOO"
printf '<%s>\n' "$BAR"

Там! Нет SYSV против BSD echo madness, все становится аккуратно напечатанной и полностью переносимой поддержкой для escape-последовательностей C. Все, пожалуйста, используйте printf сейчас и никогда не оглядывайтесь назад.

83
задан ryeguy 19 January 2009 в 03:57
поделиться

4 ответа

Я полагаю, что необходимо создать файл, названный __init__.py в каталоге Models так, чтобы Python рассматривал его как модуль.

Тогда можно сделать:

from Models.user import User

можно включать код в __init__.py (например, код инициализации, в котором несколько различных классов нуждаются), или оставьте его незаполненный. Но это должно быть там.

122
ответ дан Dana 5 November 2019 в 16:35
поделиться

пользователь импорта

u=user. Пользователь () #error на этой строке

из-за отсутствия __ init __ упомянутый выше, Вы ожидали бы ImportError, который сделает проблему более ясной.

Вы не получаете тот, потому что 'пользователь' является также существующим модулем в стандартной библиотеке. Ваши захваты оператора импорта, что один и попытки найти Пользовательский класс в нем; это не существует и только тогда делает Вы получаете ошибку.

Это обычно - хорошая идея сделать Ваш импорт абсолютным:

import Server.Models.user

для предотвращения этого вида неоднозначности. Действительно из Python 2.7 'импортируют пользователя', не посмотрит относительно текущего модуля вообще.

, Если Вы действительно хотите относительный импорт, у Вас могут быть они явно в Python 2.5 и использовании несколько ужасного синтаксиса:

from .user import User
12
ответ дан bobince 5 November 2019 в 16:35
поделиться

Необходимо создать __init__.py на Models подпапка. Файл может быть пустым. Это определяет пакет.

Тогда можно сделать:

from Models.user import User

Read все об этом в учебном руководстве по Python, здесь .

существует также хорошая статья о структуре файлов проектов Python здесь .

21
ответ дан nosklo 5 November 2019 в 16:35
поделиться

Вы отсутствуете __ init __. py. Из учебного руководства Python:

__ init __. файлы py требуются, чтобы заставлять Python рассматривать каталоги как содержащий пакеты; это сделано для предотвращения каталогов с общим названием, таких как строка, от неумышленного сокрытия допустимых модулей, которые происходят позже путь поиска модуля. В самом простом случае, __ init __. py может просто быть пустым файлом, но он может также выполнить код инициализации для пакета или установить __ все __ переменная, описанная позже.

Помещенный пустой файл, названный __ init __. py в Вашем каталоге Models, и все должны быть золотыми.

7
ответ дан UnkwnTech 5 November 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: