Изменить: на основе комментария Ulf Rompe, важно использовать "1" вместо "0" , иначе вы сломаете sys.path.
Я занимаюсь python довольно долго (более года), и я всегда смущен тем, почему люди рекомендуют использовать sys.path.append()
вместо sys.path.insert()
. Позвольте мне продемонстрировать.
Скажем, я работаю над модулем PyWorkbooks (который установлен на моем компьютере), но я одновременно работаю над другим модулем (скажем, PyJob), который включает PyWorkbooks. Когда я работаю над PyJob, я нахожу ошибки в PyWorkbooks, которые исправляю, поэтому я хочу импортировать версию для разработки.
Существует несколько способов работы над ними (например, я могу поместить проект PyWorkbooks внутри PyJob), но иногда мне все равно нужно будет играть с этим путем. Однако я не могу просто сделать sys.path.append()
в папку, где PyWorkbooks находится на. Зачем? Поскольку python сначала найдет мои установленные PyWorkbooks!
Вот почему вам нужно сделать sys.path.insert(1, path_to_dev_pyworkbooks)
Вкратце:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
или
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Это вызвало несколько зависаний для меня в прошлом, и мне бы очень хотелось, чтобы мы (как сообщество) начали рекомендовать sys.path.insert(1, path)
, как если бы вы вручную вставляли путь, я думаю, можно с уверенностью сказать, что это путь, который вы хотите использовать!
Или у меня что-то не так? Это вопрос, который меня иногда беспокоит, и я хотел его открыть!