Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Как в Python import module from another module? Подскажите, кто шарит!

  1. Как в Python import module from another module? Подскажите, кто шарит!

    Ребята, привет! У меня тут траблы с импортом модулей в Python. Есть 2 файла, оба в одной директории. В первом файле у меня класс и функции, которые я хочу использовать во втором файле. Как правильно сделать python import module from another module? Если можно, с примерами плз! Еще интересно, какие могут быть подводные камни или ошибки, на которые стоит обратить внимание. Всем заранее спасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! В Python можно заменить 'import module_name' на 'from module_name import function_or_class_name', если ты хочешь импортировать конкретные вещи.
    Программный код:
    файл1.py:
    class 
    MyClass:
    def my_method(self):
    print(
    'Hello from MyClass!')

    def my_function():
    print(
    'Hello from my_function!')

    файл2.py:
    from файл1 import MyClassmy_function

    obj 
    MyClass()
    obj.my_method()
    my_function() 
    Но если оба файла в одной папке, сначала убедись, что у тебя в директории есть __init__.py (может быть и пустым).

  4. Цитата Сообщение от ScottyBurd
    Привет! В Python можно заменить 'import module_name' на 'from module_name import function_or_class_name', если ты хочешь импортировать конкретные вещи.
    Программный код:
    файл1.py:
    class 
    MyClass:
    def my_method(self):
    print(
    'Hello from MyClass!')

    def my_function():
    print(
    'Hello from my_function!')

    файл2.py:
    from файл1 import MyClassmy_function

    obj 
    MyClass()
    obj.my_method()
    my_function() 
    Но если оба файла в одной папке, сначала убедись, что у тебя в директории есть __init__.py (может быть и пустым).
    Йоу, нифига себе! Я не знал про этот __init__.py файл. Надо будет попробовать. Спасибо, бро!

  5. Дополню к предыдущему. Если ты работаешь в одной директории и не создал пакет, можно просто использовать относительный импорт:
    Программный код:
    from .файл1 import MyClassmy_function 
    Но будь осторожен с относительными путями, они могут путать, если потом будешь рефакторить код.

  6. Цитата Сообщение от Винни-Пух
    Дополню к предыдущему. Если ты работаешь в одной директории и не создал пакет, можно просто использовать относительный импорт:
    Программный код:
    from .файл1 import MyClassmy_function 
    Но будь осторожен с относительными путями, они могут путать, если потом будешь рефакторить код.
    Относительные импорты - это сила! Но, действительно, лучше сначала все модули причесать, чтобы потом сюрпризов не было.

  7. Кстати, иногда помогает просто добавить путь к скрипту:
    Программный код:
    import sys
    sys
    .path.append('/path/to/your/module')

    from файл1 import MyClassmy_function 
    Это полезно, если модули лежат где-то вне проекта.

  8. Цитата Сообщение от Нано Хакер
    Кстати, иногда помогает просто добавить путь к скрипту:
    Программный код:
    import sys
    sys
    .path.append('/path/to/your/module')

    from файл1 import MyClassmy_function 
    Это полезно, если модули лежат где-то вне проекта.
    Круто, я не думал, что так тоже можно! Видимо, путь поиска тоже влияет на импорт. Попробую.

  9. Да вот тебе комплексный пример с импортами, может поможет понять лучше:
    Программный код:
    util.py:
    def util_func():
    print(
    'Hello from util_func!')

    main.py:
    import util
    from util import util_func

    def main_func
    ():
    util_func()
    util.util_func()

    if 
    __name__ == '__main__':
    main_func() 
    Кстати, как только сам врубился, уже вообще все по кайфу!

  10. Цитата Сообщение от Runna
    Да вот тебе комплексный пример с импортами, может поможет понять лучше:
    Программный код:
    util.py:
    def util_func():
    print(
    'Hello from util_func!')

    main.py:
    import util
    from util import util_func

    def main_func
    ():
    util_func()
    util.util_func()

    if 
    __name__ == '__main__':
    main_func() 
    Кстати, как только сам врубился, уже вообще все по кайфу!
    Такой пример - огонь! Спасибо за развернутый ответ. Теперь кажется, что все модули по полочкам кладутся. Могу наконец корректно дебажить свои баги!

Страница 1 из 2 12 ПоследняяПоследняя