Edit: com base no comentário de Ulf Rompe, é importante que você use "1" em vez de "0" , caso contrário, você quebrará sys.path .
Eu tenho feito python por um bom tempo (mais de um ano), e sempre fico confuso sobre por que as pessoas recomendam que você use em sys.path.append()
vez de sys.path.insert()
. Deixe-me demonstrar.
Digamos que eu esteja trabalhando em um módulo chamado PyWorkbooks (que está instalado no meu computador), mas ao mesmo tempo estou trabalhando em um módulo diferente (digamos PyJob) que incorpora PyWorkbooks. Como estou trabalhando no PyJob, encontro erros nos PyWorkbooks que estou corrigindo, então gostaria de importar uma versão de desenvolvimento.
Existem várias maneiras de trabalhar em ambos (eu poderia colocar meu projeto PyWorkbooks dentro do PyJob, por exemplo), mas às vezes ainda terei de brincar com o caminho. No entanto, não posso simplesmente fazer um sys.path.append()
para a pasta onde está o PyWorkbooks . Por quê? Porque o python vai encontrar meus PyWorkbooks instalados primeiro!
É por isso que você deve fazer um sys.path.insert (1, path_to_dev_pyworkbooks)
Em suma:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
ou:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Isso me causou alguns problemas no passado e eu realmente gostaria que nós (como uma comunidade) começássemos a recomendar sys.path.insert(1, path)
, como se você estivesse inserindo manualmente um caminho, acho que é seguro dizer que esse é o caminho que você deseja usar!
Ou eu tenho algo errado? É uma questão que às vezes me incomoda e eu queria que fosse abertamente!
sys.path.insert(1, dev_folder)
mas ainda não encontrei o módulo dev, e apenas usando o módulo instalado. Como faço para corrigir isso?