import my_module
или from my_module import my_function
.
sys.path
:
import sys
sys.path.append('/путь/к/директории')
import my_module
Или настройте переменную окружения PYTHONPATH
.
.py
.
Для импорта собственного модуля в Python есть несколько способов. Рассмотрим основные, вместе с примерами и объяснениями:
1. Модуль в той же директории, что и основной скрипт:
Допустим, у вас есть два файла:
my_module.py
(содержит ваш модуль)main.py
(основной скрипт)my_module.py
может выглядеть так:
# my_module.py
def my_function():
print("Привет из my_module!")
my_variable = 42
main.py
может выглядеть так:
# main.py
import my_module
my_module.my_function() # Вызов функции из модуля
print(my_module.my_variable) # Доступ к переменной из модуля
# Или, если вы хотите импортировать конкретные элементы:
from my_module import my_function, my_variable
my_function()
print(my_variable)
# Или, чтобы импортировать все элементы (не рекомендуется):
from my_module import *
my_function()
print(my_variable)
# Или, чтобы дать модулю псевдоним:
import my_module as mm
mm.my_function()
print(mm.my_variable)
2. Модуль в поддиректории:
Допустим, у вас структура такая:
main.py
my_package/
__init__.py
(необязательный, но рекомендуемый)my_module.py
my_package/__init__.py
может быть пустым или содержать код инициализации пакета.
main.py
может выглядеть так:
# main.py
import my_package.my_module
my_package.my_module.my_function()
print(my_package.my_module.my_variable)
# Или:
from my_package import my_module
my_module.my_function()
print(my_module.my_variable)
# Или:
from my_package.my_module import my_function, my_variable
my_function()
print(my_variable)
#Если __init__.py содержит импорт, например `from .my_module import my_function, my_variable`,
#тогда из main.py можно импортировать непосредственно из пакета:
#from my_package import my_function, my_variable
3. Модуль в другой директории, не являющейся поддиректорией:
В этом случае вам нужно добавить путь к директории, содержащей модуль, в sys.path
. Это можно сделать двумя способами:
А) Временно (внутри скрипта):
# main.py
import sys
import os
# Предположим, модуль находится в директории 'path/to/my_module'
module_path = os.path.abspath('path/to/my_module') # Используем абсолютный путь
if module_path not in sys.path:
sys.path.append(module_path)
import my_module
my_module.my_function()
print(my_module.my_variable)
Б) Постоянно (через переменную окружения PYTHONPATH
):
Добавьте путь к директории, содержащей ваш модуль, в переменную окружения PYTHONPATH
. Как это сделать, зависит от вашей операционной системы. Например, в Linux/macOS вы можете добавить строку export PYTHONPATH=$PYTHONPATH:/path/to/my_module
в ваш .bashrc
или .zshrc
.
После этого вы сможете импортировать модуль обычным способом: import my_module
.
Важные моменты:
__init__.py
: Этот файл превращает директорию в Python-пакет. Он может быть пустым или содержать код инициализации. Начиная с Python 3.3, __init__.py
не является обязательным для простых пакетов, но его рекомендуется использовать для совместимости и ясности.import my_package.my_module
), так и относительные (from . import my_module
) импорты. Относительные импорты начинаются с точки (.
), обозначающей текущий пакет, или двух точек (..
), обозначающих родительский пакет.os.py
).