Estou tentando recarregar um módulo que já importei no Python 3. Sei que você só precisa importar uma vez e executar o import
comando novamente não fará nada.
A execução reload(foo)
está dando este erro:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
...
NameError: name 'reload' is not defined
O que significa o erro?
python
python-3.x
Lonnie Price
fonte
fonte
reload
em um script são realmente muito raros, e é improvável que aqueles que empregam esse tipo de arte obscura estejam lendo este comentário. No entanto, se você estiver desenvolvendo um módulo e usando um console IPython para testá-lo interativamente,reload
poderá ser útil nesse fluxo de trabalho. Como o @Evan disse, no entanto, esteja atento aos efeitos colaterais do tempo de importação. Em geral, eu diria para evitarreload
os módulos de outra pessoa.reload
fazer o seu próprio faz sentido durante o tempo de design.Para> = Python3.4:
Para <= Python3.3:
Para Python2.x:
Use a
reload()
função incorporada .fonte
fonte
importlib
lugar.Para expandir as respostas escritas anteriormente, se você quiser uma solução única que funcione nas versões 2 e 3 do Python, use o seguinte:
fonte
Eu recomendo usar o seguinte snippet, pois ele funciona em todas as versões python (requer
six
):fonte
Para compatibilidade com python2 e python3, você pode usar:
fonte
Se você não quiser usar bibliotecas externas, uma solução é recriar o método reload do python 2 para o python 3, conforme abaixo. Use isso na parte superior do módulo (assume python 3.4+).
O recarregamento de BTW é muito necessário se você usar arquivos python como arquivos de configuração e quiser evitar a reinicialização do aplicativo .....
fonte