Изменить: основываясь на комментарии Ульфа Ромпе, важно использовать «1» вместо «0» , иначе вы нарушите sys.path .
Я занимаюсь питоном уже довольно давно (более года), и меня всегда смущает, почему люди рекомендуют вам использовать sys.path.append()
вместо sys.path.insert()
. Позвольте мне продемонстрировать.
Скажем, я работаю над модулем PyWorkbooks (установленным на моем компьютере), но одновременно работаю над другим модулем (скажем, PyJob), который включает PyWorkbooks. Когда я работаю над PyJob, я нахожу ошибки в PyWorkbooks, которые исправляю, поэтому я хотел бы импортировать версию для разработки.
Есть несколько способов работать с обоими (например, я мог бы поместить свой проект PyWorkbooks в PyJob), но иногда мне все равно нужно поиграть с путем. Однако я не могу просто сделать a 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)
, как будто вы вручную вставляете путь, я думаю, можно с уверенностью сказать, что это тот путь, который вы хотите использовать!
Или у меня что-то не так? Этот вопрос иногда беспокоит меня, и я хотел, чтобы он был открыт!
sys.path.insert(1, dev_folder)
но он все еще не находит модуль dev, а использует только установленный модуль. Как это исправить?