(As informações a seguir se aplicam apenas às instalações Anaconda. A idéia básica se aplica a qualquer instalação python, mas as formas precisas de abordar o problema são diferentes.)
Se você escrever um módulo Python chamado, digamos, coolscript
que tem todos os tipos de funções legais que você escreveu. Talvez você o tenha guardado na área de trabalho do seu computador. Talvez então você vá ao Anaconda Navigator, acione o Spyder ou outro programa dentro do Anconda, e tente importar essas funções com uma linha de código como,
from coolscript import *
Mas, infelizmente, você recebe um erro:
ModuleNotFoundError: No module named 'coolscript'
Lotes de coisas podem causar isso, mas talvez seja porque o diretório no qual coolscipt.py
reside não faz parte do PYTHONPATH
, i.e., o conjunto de directórios de ficheiros em que o Python procura os ficheiros que precisa. Vamos descobrir o que é o nosso PYTHONPATH
e ver se ele contém o nosso script. Comece um Anaconda Prompt. Você pode fazer isso diretamente do menu Iniciar no Windows ou do aplicativo Launcher no MacOS, mas outra maneira de iniciar é lançando o Anaconda Navigator e iniciando um terminal como na captura de tela abaixo:
Agora, execute este comando para ver o seu PYTHONPATH
:
python -c "import sys; print('\n'.join(sys.path))"
No meu caso, obtenho o seguinte resultado numa máquina pessoal baseada no Windows com uma nova instalação do Anaconda3:
Sem o meu script estar numa dessas pastas (ou suas subpastas), ele não será encontrado por python a menos que você indique explicitamente o caminho completo quando você o chamar de python (ou se você iniciar python no diretório em que o arquivo reside). Idealmente, queremos evitar este problema instalando os módulos corretamente. Se foi outra pessoa que escreveu o módulo de código, a melhor maneira de fazer isso é instalá-lo usando conda
ou, se isso não for possível, usando pip
ou um arquivo setup.py
. Estas são também as melhores práticas para o próprio código.
No entanto, às vezes é útil ter um “diretório de trabalho” conveniente para código temporário ou inacabado, e você pode não querer navegar python para esse diretório toda vez que você chamar o código. Uma maneira de resolver este problema é adicionar seu diretório preferido ao seu PYTHONPATH
.
Se quisermos adicionar temporariamente um diretório ao nosso python, podemos simplesmente executar os seguintes comandos no terminal python que estamos usando para executar o script:
import syssys.path.append(r'/path/to/my/package')
onde “/caminho/para/meu/pacote” deve ser alterado para o caminho do arquivo para a pasta que contém o seu arquivo de script python. Esta abordagem só funcionaria até fecharmos aquela instância do compilador python; precisaríamos de a executar novamente cada vez que iniciássemos uma linha de comandos python.
Se quisermos adicionar mais permanentemente uma pasta ao nosso PYTHONPATH
, podemos fazê-lo criando um ficheiro .pth
no directório site-packages
. Na captura de tela acima, observe a pasta site-packages
. Cada instalação do Anaconda deve ter uma pasta com esse nome. Crie um novo arquivo de texto nesse diretório, nomeando-o de forma que tenha a extensão .pth
(por exemplo, um arquivo com o nome extrapythonfolders.pth
seria bom). Dentro desse arquivo de texto, você pode listar diretórios que você quer incluir no seu PYTHONPATH
, um por linha. Por exemplo, numa máquina Windows eu posso adicionar uma linha que diz C:\myscripts
. Salve o arquivo com essas novas localizações, e então tente novamente rodar o seguinte comando no Anaconda Prompt:
python -c "import sys; print('\n'.join(sys.path))"
Você deve ver que seus novos diretórios estão agora incluídos (você pode ter o Anaconda restartado para fazê-lo funcionar em todo o seu software, no entanto). Você deve agora ser capaz de importar módulos ou executar código a partir desse diretório, independentemente de onde você iniciar python na sua estrutura de arquivos.