Эхо так девяносто и настолько чревато опасностями, что его использование должно привести к дампам ядра не менее 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
сейчас и никогда не оглядывайтесь назад.
Я полагаю, что необходимо создать файл, названный __init__.py
в каталоге Models так, чтобы Python рассматривал его как модуль.
Тогда можно сделать:
from Models.user import User
можно включать код в __init__.py
(например, код инициализации, в котором несколько различных классов нуждаются), или оставьте его незаполненный. Но это должно быть там.
пользователь импорта
u=user. Пользователь () #error на этой строке
из-за отсутствия __ init __ упомянутый выше, Вы ожидали бы ImportError, который сделает проблему более ясной.
Вы не получаете тот, потому что 'пользователь' является также существующим модулем в стандартной библиотеке. Ваши захваты оператора импорта, что один и попытки найти Пользовательский класс в нем; это не существует и только тогда делает Вы получаете ошибку.
Это обычно - хорошая идея сделать Ваш импорт абсолютным:
import Server.Models.user
для предотвращения этого вида неоднозначности. Действительно из Python 2.7 'импортируют пользователя', не посмотрит относительно текущего модуля вообще.
, Если Вы действительно хотите относительный импорт, у Вас могут быть они явно в Python 2.5 и использовании несколько ужасного синтаксиса:
from .user import User
Необходимо создать __init__.py
на Models
подпапка. Файл может быть пустым. Это определяет пакет.
Тогда можно сделать:
from Models.user import User
Read все об этом в учебном руководстве по Python, здесь .
существует также хорошая статья о структуре файлов проектов Python здесь .
Вы отсутствуете __ init __. py. Из учебного руководства Python:
__ init __. файлы py требуются, чтобы заставлять Python рассматривать каталоги как содержащий пакеты; это сделано для предотвращения каталогов с общим названием, таких как строка, от неумышленного сокрытия допустимых модулей, которые происходят позже путь поиска модуля. В самом простом случае, __ init __. py может просто быть пустым файлом, но он может также выполнить код инициализации для пакета или установить __ все __ переменная, описанная позже.
Помещенный пустой файл, названный __ init __. py в Вашем каталоге Models, и все должны быть золотыми.