Есть много способов импортировать файл Python, все со своими плюсами и минусами.
Не спешите выбирать первую стратегию импорта, которая работает для вас, иначе вам придется переписать кодовую базу позже, когда вы обнаружите, что она не соответствует вашим потребностям.
Я начну с объяснения самого простого примера №1, а затем перейду к самому профессиональному и надежному примеру №7.
Пример 1. Импорт модуля Python с интерпретатором Python:
Поместите это в /home/el/foo/fox.py:
def what_does_the_fox_say():
print("vixens cry")
Войдите в интерпретатор python:
el@apollo:/home/el/foo$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
>>> import fox
>>> fox.what_does_the_fox_say()
vixens cry
>>>
Вы импортировали fox через интерпретатор python, вызвали функцию python what_does_the_fox_say() из fox.py.
Пример 2. Используйте execfile или (exec в Python 3) в скрипте для выполнения другого файла Python на месте :
Поместите это в /home/el/foo2/mylib.py:
def moobar():
print("hi")
Поместите это в /home/el/foo2/main.py:
execfile("/home/el/foo2/mylib.py")
moobar()
запустите файл:
el@apollo:/home/el/foo$ python main.py
hi
Функция moobar была импортирована из mylib.py и сделана доступной в main.py
Пример 3. Использование функции from ... import ...
Поместите это в /home/el/foo3/chekov.py:
def question():
print "where are the nuclear wessels?"
Поместите это в /home/el/foo3/main.py:
from chekov import question
question()
Запускаем так:
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
Если вы определили другие функции в chekov.py, они были бы недоступны, если вы import *
Пример 4. Импортируйте riaa.py, если он находится не в том месте, где он был импортирован
Поместите это в /home/el/foo4/stuff/riaa.py:
def watchout():
print "computers are transforming into a noose and a yoke for humans"
Поместите это в /home/el/foo4/main.py:
import sys
import os
sys.path.append(os.path.abspath("/home/el/foo4/stuff"))
from riaa import *
watchout()
Запустить его:
el@apollo:/home/el/foo4$ python main.py
computers are transforming into a noose and a yoke for humans
Это импортирует все, что есть во внешнем файле, из другого каталога.
Пример 5, используйте os.system("python yourfile.py")
import os
os.system("python yourfile.py")
Пример 6, импортируйте файл, используя загрузочный крючок python:
Обновление: этот пример работал как для python2, так и для 3, но теперь работает только для python2. python3 избавился от этого пользовательского набора функций автозагрузки, потому что им злоупотребляли низкоквалифицированные писатели библиотеки Python, используя его для невежливого внедрения своего кода в глобальное пространство имен перед всеми пользовательскими программами. Если вы хотите, чтобы это работало для python3, вам нужно проявить больше творчества. Если я расскажу вам, как это сделать, разработчики python отключат и этот набор функций, так что вы сами по себе.
См .: https://docs.python.org/2/library/user.html а>
Поместите этот код в свой домашний каталог в ~/.pythonrc.py
class secretclass:
def secretmessage(cls, myarg):
return myarg + " is if.. up in the sky, the sky"
secretmessage = classmethod( secretmessage )
def skycake(cls):
return "cookie and sky pie people can't go up and "
skycake = classmethod( skycake )
Поместите этот код в свой main.py (может быть где угодно):
import user
msg = "The only way skycake tates good"
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")
Запустите, у вас должно получиться вот что:
$ python main.py
The only way skycake tates good is if.. up in the sky,
the skycookie and sky pie people can't go up and have the sky pie!
SKYCAKE!
Если вы получили здесь сообщение об ошибке: ModuleNotFoundError: No module named 'user', значит, вы используете python3, автозагрузчики по умолчанию отключены.
Кредит за этот jist принадлежит: https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py Отправьте свои подводные лодки.
Пример 7. Самый надежный: импортируйте файлы в Python с помощью простой команды импорта:
- Создайте новый каталог
/home/el/foo5/
- Создайте новый каталог
/home/el/foo5/herp
Создайте пустой файл с именем __init__.py под herp:
el@apollo:/home/el/foo5/herp$ touch __init__.py
el@apollo:/home/el/foo5/herp$ ls
__init__.py
Создайте новый каталог / home / el / foo5 / herp / derp
Под derp создайте еще один __init__.py файл:
el@apollo:/home/el/foo5/herp/derp$ touch __init__.py
el@apollo:/home/el/foo5/herp/derp$ ls
__init__.py
В / home / el / foo5 / herp / derp создайте новый файл с именем yolo.py. Поместите его туда:
def skycake():
print "SkyCake evolves to stay just beyond the cognitive reach of " +
"the bulk of men. SKYCAKE!!"
Момент истины, создайте новый файл /home/el/foo5/main.py, поместите его туда;
from herp.derp.yolo import skycake
skycake()
Запустить его:
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
Пустой файл __init__.py сообщает интерпретатору python, что разработчик предполагает, что этот каталог будет импортируемым пакетом.
Если вы хотите увидеть мою публикацию о том, как включить ВСЕ файлы .py в каталог, см. Здесь: https://stackoverflow.com/a/20753073/445131
person
Eric Leschinski
schedule
23.12.2013
import Aне будет работать. Мы должны использоватьfrom current_directory_name import *илиfrom current_directory_name import THINGS_YOU_WANT_TO_IMPORT. Поиграйте немного для импорта из другого каталога - person Shivam Jha   schedule 01.07.2020