Является ли добавление корневого каталога проекта в sys.path хорошей практикой? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть вопрос о добавлении пути проекта в python, чтобы облегчить import усилия.

Положение

Когда я пишу код на Python, я обычно добавляю необходимый путь к sys.path, используя

import sys
sys.path.append("/path/to/dir/") # almost every `.py` need this

Иногда, когда мой проект становится больше со многими уровнями каталогов, этот подход кажется громоздким и подверженным ошибкам (особенно когда я реорганизую свои файлы)

Недавно я начал использовать скрипт bash (расположенный в корневом каталоге проекта), который добавляет в проект файл sys.path.append с корневым аргументом проекта в файл .py. При таком подходе мне вряд ли придется вручную заботиться об импорте модуля.

Вопрос

Мой вопрос: это хорошая практика? Я считаю, что это удобно для меня по сравнению с моим старым методом, но, поскольку скрипт bash является отдельным файлом, мне нужно 2 команды для запуска любого скрипта в моем проекте (одна для bash и одна для .py). Я могу включить команду, вызывающую .py в bash, но она гораздо менее гибкая, чем прямой вызов из терминала.

Очень хочется услышать несколько советов! Заранее спасибо. Будем благодарны за любые предложения!

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Обычно не рекомендуется использовать манипуляции sys.path в библиотеке или программе python. Вы должны добавить соответствующие пути к PYTHONPATH в вызывающей среде для вашей программы на Python:

PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH" python ...

или

export PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH"
python ...

Это позволяет вам легко манипулировать путями, по которым ваша программа или библиотека будут легко искать зависимости без изменения вашего кода.

Также очень легко управлять этим в вашей личной среде разработки, изменив свой bashrc или в своих производственных средах в своем скрипте init (или другом скрипте-обертке) и предоставив вам один место для обновления при каждом добавлении или изменении путей проекта.

Учитывая, что у вас есть почти один каталог на файл .py, вам также следует подумать о том, как ваш код может быть организован в пакетов , чтобы еще больше упростить настройку.

0 голосов
/ 03 июля 2018

Это не особенно хорошая практика, хотя вы можете сойти с рук. Хотя лучше взглянуть на virtualenv (или pipenv) для более плавного рабочего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...