Есть несколько способов подключиться к модулю из другого расположения. Выберите подход в зависимости от ваших потребностей и структуры проекта.
/storage/other_module - это директория (пакет)Если это директория с файлом __init__.py, то это Python-пакет.
# /home/user/project/run.py import sys import os # Добавляем путь к родительской директории модуля sys.path.insert(0, '/storage') # Теперь можно импортировать from other_module import some_module # или import other_module.submodule
Если ваш проект тоже в пакете, можно использовать относительные импорты
from ...storage.other_module import some_module
symlink# В терминале ln -s /storage/other_module /home/user/project/other_module
Теперь можно импортировать как локальный модуль
from other_module import some_module
/storage/other_module.py - это файл# /home/user/project/run.py import sys sys.path.insert(0, '/storage') # Импортируем модуль import other_module
importlibimport importlib.util import sys # Указываем путь к файлу module_path = '/storage/other_module.py' module_name = 'other_module' # Загружаем спецификацию модуля spec = importlib.util.spec_from_file_location(module_name, module_path) module = importlib.util.module_from_spec(spec) sys.modules[module_name] = module spec.loader.exec_module(module) # Теперь используем модуль result = module.some_function()
Создаем загрузчик для модуля
from importlib.machinery import SourceFileLoader module = SourceFileLoader('other_module', '/storage/other_module.py').load_module() # Используем модуль module.some_function()
Для обоих случаев самый чистый способ - добавить путь в sys.path:
# /home/user/project/run.py import sys import os # Добавляем путь к storage в sys.path sys.path.insert(0, '/storage') # Теперь импортируем try: # Если это пакет (директория) from other_module import some_module except ImportError: # Если это файл import other_module # Используем модуль
Вы можете создать setup.py для вашего модуля и установить его:
# setup.py в /storage from setuptools import setup, find_packages setup( name='other_module-module', version='0.1', packages=find_packages(), )
pip install -e /storage
Теперь можно импортировать из любого места:
from other_module import some_module