У меня следующая структура каталогов
parent_directory/
+-- utils.py
+-- child_directory/
| +-- script.py
+-- results_directory/
| +-- results1
| +-- results2
В child_directory/
есть несколько сценариев, которые ничего не импортируют друг от друга.Однако все они импортируют данные из utils.py
в parent_directory/
и используют данные из results_directory
.Вместо того, чтобы копировать скрипты в родительский каталог один за другим.Я хочу просто сделать мягкую символическую ссылку на файл child_directory/script.py
в parent_directory
.Изнутри parent_directory
я делаю ссылку, используя ln -s child_directory/script.py .
или ln -s absolute/path/to/child_directory/script.py .
.А затем используйте python script.py
для запуска сценария.
Ниже приведен пример кода script.py
:
from utils.py import results_reader
# Do work
Когда я запускаю скрипт по символической ссылке в parent_directory
, я получаю следующую ошибку:
ModuleNotFoundError: No module named 'utils'
Я не совсем понимаю, что здесь происходит.os.getcwd()
показывает текущий путь, который будет parent_directory/
.Разве он не должен читать файл utils.py
?Когда я запускаю script.py
, копируя его в parent_directory/
, он работает без ошибок
И когда я изменяю from utils.py import results_reader
на from .utils.py import results_reader
, я получаю следующую ошибку:
ModuleNotFoundError: No module named '__main__.utils'; '__main__' is not a package