Create local package#
📦 1. Общий модуль внутри каталога проектов#
Представим такую структуру:
nlp-projects/
├── common/ ← Общие классы и утилиты
│ ├── __init__.py
│ ├── text_cleaner.py
│ └── tokenizer.py
├── project1/
│ ├── main.py
│ └── config.yaml
├── project2/
│ ├── app.py
│ └── some_module.py
└── requirements.txt
✅ 2. Импорт из common в других проектах#
Способ 1 — добавление корня в sys.path#
В начале main.py или app.py:
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from common.text_cleaner import TextCleaner
💡 Работает во всех IDE и при запуске из командной строки.
Способ 2 — запуск из корня#
Если ты запускаешь проекты из корня каталога:
cd nlp-projects
python project1/main.py
и внутри main.py используешь просто:
from common.text_cleaner import TextCleaner
📌 Условие: корень должен быть в PYTHONPATH, что IDE типа PyCharm, VS Code умеют делать автоматически.
🧰 3. Добавить __init__.py во все папки#
Это сделает каталог полноценным Python-пакетом и упростит импорты:
touch common/__init__.py
touch project1/__init__.py
touch project2/__init__.py
💼 4. Альтернатива: сделать common локальным installable пакетом#
Можно превратить common в мини-библиотеку:
nlp-projects/
├── common/
│ ├── common/
│ │ ├── __init__.py
│ │ ├── text_cleaner.py
│ │ └── tokenizer.py
│ └── setup.py
setup.py:
from setuptools import setup, find_packages
setup(
name='common',
version='0.1',
packages=find_packages(),
)
Затем устанавливаешь локально:
cd nlp-projects/common
pip install -e .
или
pip install -e ./common
И в любом проекте можно писать:
from common.text_cleaner import TextCleaner
Явное указание пути к общим модулям#
для файлов .py:
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
для файлов .ipynb:
project_root = os.path.abspath(os.path.join(os.getcwd(), '..'))
if project_root not in sys.path:
sys.path.insert(0, project_root)