Я пытаюсь импортировать файл .py в другой .py файл через import file abc.py
или import abc.py
или import abc
, но не из них работает. Я пробовал все методы, перечисленные в StackOverflow, но это не сработало. Я указал путь к папке python, но это не помогло. Каково решение?Как импортировать файлы .py в другие файлы python?
ответ
Если оба файла находятся в том же каталоге:
import abc
# Then you can just use things from it like this:
abc.use_for_etc
Теперь, если вы не в том же каталоге, у вас есть 2 варианта:
- Добавить abc.py расположение на пути питона;
Если это проект питона написать setup.py и установить глобально с
пункт установить -e.
вот пример setup.py here .
На всякий случай 'abc' является встроенным модулем python, поэтому это не очень хорошая замена« foobar ». – J0HN
^Да, это хороший момент, я просто следовал примеру в вопросе. –
Это запрос на эквивалент python #include в C? Если это так, их нет.
Файлы для импорта содержат определения того, что вы хотите использовать, как правило, «постоянные» определения определений функций. Пусть abc.py содержит
SPAM="spam"*19
def multispam(n):
for i in range(0,n): print SPAM
, то вы можете сделать
import abc
print abc.SPAM
abc.multispam(20)
или вы можете предпочесть просто определить СПАМ
from abc import SPAM
print SPAM
Другой способ сказать это, является то, что импортируемый файл выполняется, когда вы импортируете его, поэтому в целом для определения сущностей только разумно. Вы можете увидеть это в действии, если вы должны были добавить
print "abc being imported"
на abc.py, а затем сообщение будет напечатано при импорте.
Если abc не находится в вашем текущем каталоге, вы должны убедиться, что папка, в которой она находится, находится на вашем пути python.
Нам нужна дополнительная информация - макет вашего проекта/каталога, ваш код и полная трассировка стека ошибки. –
Где вы читали 'import file abc.py'? –
Невозможно ответить на этот вопрос, не зная структуру проекта, поскольку вы делаете нелокальный импорт (что на самом деле хорошо). Не нужно добавлять '.py' суффиксы для импорта операторов - они все равно не сработают. – J0HN