Как правило, python модули должны быть установлены для python, чтобы найти их. Одним из побочных правил является то, что python будет искать в пути скрипта, чтобы увидеть, есть ли модуль там. Переместите script1.py
вниз на уровень, убедитесь, что у вас есть __init__.py
, и он будет работать.
└── root
├── script1.py
│
└── folder2
├── __init__.py
├── module1.py
Вы также можете script1.py
вставить его каталог прародителя в sys.path
. Но на самом деле лучший способ решить эту проблему - сделать пакет устанавливаемым, добавив файл setup.py. Чрезвычайно примитивная версия -
import setuptools
setuptools.setup(
name="Foobar",
packages=setuptools.find_packages(),
scripts=["folder1/script1.py"]
)
, и ваш каталог может быть
└── root
├── setup.py
├── folder1
│ ├── script1.py
│
└── folder2
├── __init__.py
├── module1.py
Теперь вы можете сделать python setup.py develop
, чтобы запустить ваш скрипт из каталога разработки. Или python setup.py install
(часто в созданном вами venv) для стандартной установки.