Making Anaconda Python Find Your Python Scripts – Modificando o PYTHONPATH

(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.

Deixe um comentário