Чтобы импортировать модуль, который находится на уровне выше в иерархии папок в Python, есть несколько подходов, которые можно использовать. Рассмотрим несколько из них.
### 1. Использование `sys.path`
Чтобы добавить родительский каталог (или любой другой каталог) в `sys.path`, вы можете сделать следующее:
```python
import sys
import os
# Получаем путь к родительской папке
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
# Добавляем путь к sys.path
sys.path.append(parent_dir)
# Теперь вы можете импортировать ваш модуль
from src.your_module import YourClass
```
### 2. Использование пакетов
Если у вас есть возможность изменить структуру вашего проекта, вы можете сделать `src` пакетом, добавив в него файл `__init__.py`. Это позволит вам использовать его как пакет и импортировать модули из более высокого уровня:
```
project/
│
├── src/
│ ├── __init__.py
│ └── your_module.py
│
└── your_script.py
```
Теперь вы можете делать импорт из `your_script.py`:
```python
from src.your_module import YourClass
```
### 3. Структурирование проекта
Наконец, если это возможно, лучшим решением будет реорганизация вашего проекта так, чтобы избежать необходимости использования относительных импортов. Например:
```
project/
│
├── src/
│ ├── __init__.py
│ └── your_module.py
│
└── tests/
├── __init__.py
└── test_your_module.py
```
Теперь вы можете легко импортировать ваш модуль в тестах, исчерпывая далеко идущие пути.
### 4. Использование виртуального окружения и PYTHONPATH
Если вы запускаете скрипты из командной строки, вы можете установить переменную окружения `PYTHONPATH`, указывающую на каталог, содержащий ваш модуль:
```bash
export PYTHONPATH=/path/to/your/project/src
```
После этого вы сможете запускать свои скрипты и импортировать модули из `src`, не меняя `sys.path`.
Выбор конкретного метода зависит от вашего проекта и потребностей.