Редактировать:на основе комментария Ульфа Ромпе, важно, чтобы вы использовали " 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)
, как если бы вы вручную вставляли путь, я думаю, можно с уверенностью сказать, что это путь, который вы хотите использовать!
Или у меня что-то не так? Это вопрос, который иногда беспокоит меня, и я хотел, чтобы он был открытым!