Como configurar PYTHONPATH personalizado com VM e PyCharm?

86

Estou usando o IntelliJ com o plug-in Python e o recurso Remote Interpreter para me comunicar com minha VM Vagrant. Ele configura o interpretador remoto corretamente para usar o interpretador da minha VM. Mas, eu uso um PYTHONPATH personalizado em minha VM e gostaria que o IntelliJ reconhecesse esse caminho e incluísse os módulos nesse caminho ao desenvolver.

Como configuro o interpretador remoto do IntelliJ / PyCharm para usar um PYTHONPATH personalizado na VM?

Baalexander
fonte
Eu tenho exatamente esse problema, exceto que tenho muitos projetos seguindo um esquema comum e agora (no Emacs) eu configurei tudo dinamicamente. Configurá-lo por projeto no Pycharm parece um fardo.
AdamC de

Respostas:

125

Para PyCharm 5 (ou 2016.1), você pode:

  1. selecione Preferências> Intérprete de Projeto
  2. à direita do seletor de intérprete há um botão "...", clique nele
  3. selecione "mais ..."
  4. abrir uma nova janela "Project Interpreters"
  5. selecione o botão mais correto (denominado "mostrar caminhos para o intérprete selecionado")
  6. abrir uma janela "Caminhos do intérprete"
  7. clique no botão "+"> selecione o diretório PYTHONPATH desejado (a pasta que contém os módulos python) e clique em OK
  8. Feito! Aproveite!

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui insira a descrição da imagem aqui

phil
fonte
Isso é o que eu faço no meu projeto, tão chato. Tenho projeto A, projeto comum, teste de projeto. Para executar os testes de unidade no teste do projeto, adicionei dependências do projeto para que o teste do projeto dependa do projeto A e comum, mas ainda tenho que adicionar manualmente as pastas A e comum no PYTHONPATH.
thinkanotherone
Isso adicionará o diretório ao PYTHONPATH global desse interpretador, certo? Não apenas o projeto?
Ray
@Ray sim, parece que mudará as configurações globais do intérprete. Mas podemos usar virtualenv diferente para projetos diferentes e definir PYTHONPATH diferentes para eles.
phil
Observe que você deve primeiro definir o intérprete como o intérprete do seu projeto, caso contrário, o botão mais à esquerda é desativado
ospider
No OSX, Cmd + Shift + Ponto mostra pastas ocultas na caixa de diálogo de seleção (por exemplo, / usr) - uma vez que não parece haver uma maneira de apenas digitar o caminho.
Flash de
83

As instruções para editar seu PYTHONPATH ou corrigir problemas de resolução de importação para inspeção de código são as seguintes:

  1. Abra Preferências (em um Mac, o atalho do teclado é ⌘,).

Como acessar as configurações do menu

  1. Procure Project Structurena barra lateral à esquerda sobProject: Your Project Name

  2. Adicionar ou remover módulos na barra lateral direita

Configurações da estrutura do projeto no Pycharm 4.5

EDIT : Eu atualizei esta captura de tela para PyCharm 4.5

Bjorn
fonte
Isso ainda se aplica? Eu supostamente tenho o PyCharm profissional mais recente, mas estou perdendo muitas dessas categorias ... incluindo a estrutura do projeto! Mas obrigado por postar isso !!!
R Claven
1
Olá, atualizei a captura de tela do PyCharm 4.5, a versão mais recente. Parece que eles reorganizaram as configurações na barra lateral.
Bjorn
Na verdade, eu devo a você um MASSIVO obrigado. Eu estava mexendo com as "configurações padrão" em vez das configurações do projeto. Sua resposta aqui me ajudou a perceber isso e então resolvi muitas discrepâncias e funcionou. OBRIGADO!
R Claven
Existe uma maneira de fazer isso globalmente? adicionar /Library/Python/2.7/site-packages e /usr/local/lib/python2.7/site-packages a cada projeto que eu abro fede.
jeremyjjbrown
Sim @jeremyjjbrown, acredito que você pode fazer isso clicando em "Project Interpreter" e selecionando o caminho do intérprete que contém os pacotes do site que você deseja. Esta pergunta estava apenas respondendo disponibilizando pacotes específicos de projetos para seus projetos. Você pode até usar um requirements.txt para adicionar todos os seus projetos deps no pycharm.
Bjorn
16

Para mim, a solução era ir para

Run > Edit Configuration > Defaults > Python

então gerencie o

  • "Adicionar raízes de conteúdo a PYTHONPATH" e
  • "Adicionar raiz de origem a PYTHONPATH"

, bem como definir o campo "Diretório de trabalho".

Se você definiu suas próprias configurações de execução / depuração, você pode querer ir para

Run > Edit Configuration > Python > [Whatever you called your config]

e edite lá.

Meu problema era que eu queria ter todo o meu repositório incluído no meu projeto PyCharm 2016.2, mas apenas uma subpasta era a raiz do código-fonte do Python real. Eu adicionei como "Source Root" clicando com o botão direito do mouse na pasta e depois

Mark directory as > Source Root

Em seguida, desmarque "Adicionar raízes de conteúdo a PYTHONPATH" e marque "Adicionar raiz de origem a PYTHONPATH" no menu de configuração Executar / Depurar. Em seguida, verifiquei o caminho da pasta fazendo:

import sys
logger.info(sys.path)

Isso resultou:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

No entanto, sem a correção, dizia:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root',                   <-- NOT WANTED
    '/usr/lib/python3.4', 
    '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

O que significa que incluí a pasta raiz do projeto. Isso atrapalhou o caminho para mim.

André C. Andersen
fonte
Obrigado, não sou nenhum especialista em Python e sempre quis saber quais caminhos de importação posso alcançar! (essa sys.pathparte)
Rastikan
Isso não é ideal porque requer a atualização de todas as configurações de execução.
StephenBoesch
@javadba Se quiser que funcione com todas as configurações, vá para Run > Edit Configuration > Templates > Python.
André C. Andersen
@ AndréC.Andersen thx! Eu nunca tinha olhado para Templates antes.
StephenBoesch
13

Isso foi feito com a PyCharm Community 2019.1

  1. Vá para as configurações do projeto Configurações
  2. Vá para Estrutura do Projeto e clique com o botão direito no diretório que deseja adicionar e clique em "Fontes" Estrutura do projeto - adicionar fontes

Isso deve adicionar o diretório ao seu pythonpath Estrutura do projeto - após adicionar fontes

Dustindorroh
fonte
3

Uma atualização para a resposta correta phil fornecida, para versões mais recentes do Pycharm (por exemplo, 2019.2).

Vá para Arquivo> Configurações e encontre seu projeto, então selecione Intérprete de Projeto . Agora clique no botão com uma engrenagem à direita do interpretador de projeto selecionado (costumava ser um ... ).

insira a descrição da imagem aqui

No menu suspenso, selecione Mostrar tudo ... e, na caixa de diálogo que se abre, clique no ícone com uma pasta e duas subpastas.

insira a descrição da imagem aqui

Você verá uma caixa de diálogo com os caminhos do intérprete atuais, clique em + para adicionar mais um.

Fanta
fonte
OBRIGADO!!! Um colega e eu temos lutado para conseguir que seu ambiente seja configurado para corresponder ao meu, e não me lembro de ter feito essas etapas, mas há um caminho importante que eu tenho (que até diz "adicionado pelo usuário").
Drarok
2

Em minha experiência, usar uma variável PYTHONPATH geralmente é a abordagem errada, porque ela não funciona bem com VENV no Windows. PYTHON no carregamento preparará o caminho adicionando PYTHONPATH ao caminho, o que pode resultar em seu Venv cuidadosamente preparado buscando preferencialmente pacotes de sites globais.

Em vez de usar o caminho PYTHON, inclua um arquivo pythonpath.pth no diretório de pacotes do site relevante (embora tenha cuidado com os pythons personalizados ocasionalmente procurando por eles em locais diferentes, por exemplo, enthought procura no mesmo diretório que python.exe para seus arquivos .pth) com cada ambiente virtual. Isso funcionará como um PYTHONPATH, mas será específico para a instalação do python, então você pode ter um separado para cada instalação / ambiente do python. O Pycharm se integra fortemente ao VENV se você apenas acessar o python do VENV como sua instalação do python.

Veja, por exemplo, esta questão do SO para mais detalhes sobre os arquivos .pth ....

phil_20686
fonte
1

Últimas seleções de 12/2019 para PYTHONPATH para um determinado intérprete. insira a descrição da imagem aqui

Richard Keene
fonte
0

Bem, você pode fazer isso indo para a caixa de diálogo do intérprete. Clique no intérprete que está usando e, abaixo dele, você verá duas guias, uma chamada Pacotes e outra chamada Caminho.

Clique em Caminho e adicione seu caminho VM a ele.

Jogos Brainiac
fonte
Quando clico no interpretador remoto e adiciono um Classpath, ele reclama quando eu especifico um diretório remoto (como /home/vagrant/mydir). Preciso prefaciar o caminho com algo? Minha interface é um pouco diferente, pois estou usando o IntelliJ com o plugin Python e não o PyCharm, se isso ajudar.
baalexander de
1
Bem, você pode simplesmente ir ao interpretador SSH e carregar as coisas do arquivo vagrant, é uma opção lá.
Games Brainiac
0

No Intellij v2017.2 você pode ir para:

run > edit configurations > click ... next to the field 'Environment variables' > click the green + sign

Nome = PYTHONPATH

value = your_python_path

Joris Kinable
fonte