Sempre que eu uso sys.path.append
, o novo diretório será adicionado. No entanto, quando eu fechar o python, a lista voltará aos valores anteriores (padrão?). Como adiciono permanentemente um diretório PYTHONPATH
?
fonte
Sempre que eu uso sys.path.append
, o novo diretório será adicionado. No entanto, quando eu fechar o python, a lista voltará aos valores anteriores (padrão?). Como adiciono permanentemente um diretório PYTHONPATH
?
Você precisa adicionar seu novo diretório à variável de ambiente PYTHONPATH
, separada por dois pontos do conteúdo anterior. Em qualquer forma de Unix, você pode fazer isso em um script de inicialização apropriado para qualquer shell que esteja usando (.profile
ou o que for, dependendo do seu shell favorito) com um comando que, novamente, depende do shell em questão; no Windows, você pode fazer isso através da GUI do sistema para esse fim.
superuser.com
pode ser um lugar melhor para perguntar mais, ou seja, para obter mais detalhes, se você precisar de detalhes sobre como enriquecer uma variável de ambiente na plataforma e no shell escolhidos, já que não é realmente uma questão de programação em si.
Se você estiver usando o bash (em uma distribuição Mac ou GNU / Linux), adicione-o ao seu
~/.bashrc
fonte
~/.bashrc
, em seguida, executarsource ~/.bashrc
ver stackoverflow.com/questions/2518127/...sudo su
no início do seu arquivo .bashrc. Este post concorda comigo. No meu sistema, pelo menos, nem é necessário.Em vez de manipular,
PYTHONPATH
você também pode criar um arquivo de configuração de caminho . Primeiro descubra em qual diretório o Python procura essas informações:Por alguma razão, isso não parece funcionar no Python 2.7. Lá você pode usar:
Em seguida, crie um
.pth
arquivo nesse diretório que contém o caminho que você deseja adicionar (crie o diretório se ele não existir).Por exemplo:
fonte
python -m site --user-site
e(create the directory if it doesn't exist)
peças eram o que estava faltando para fazê-lo funcionar.somelib.pth
? Caso contrário, alguma sugestão de por que isso pode não estar funcionando?Isso funciona no Windows
Então você poderá ver todos os módulos dentro desses caminhos a partir dos seus scripts.
fonte
Caso alguém ainda esteja confuso - se você estiver em um Mac, faça o seguinte:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
fonte
export
chave era a coisa que estava faltando !!!!, votado, muito obrigado!Você pode adicionar o caminho através do seu arquivo pythonrc, cujo padrão é ~ / .pythonrc no linux. ie
Você também pode definir a
PYTHONPATH
variável de ambiente, em um arquivo rc global, como~/.profile
no mac ou linux, ou através do Painel de Controle -> Sistema -> guia Avançado -> Variáveis de Ambiente no Windows.fonte
Para dar um pouco mais de explicação, o Python construirá automaticamente seus caminhos de pesquisa (como mencionado acima e aqui ) usando o
site.py
script (normalmente localizado em sys.prefix +lib/python<version>/site-packages
e tambémlib/site-python
). Pode-se obter o valor de sys.prefix:O script site.py adiciona vários diretórios, dependendo da plataforma, como
/usr/{lib,share}/python<version>/dist-packages
,/usr/local/lib/python<version>/dist-packages
ao caminho de pesquisa e também pesquisa esses caminhos por<package>.pth
arquivos de configuração que contêm caminhos de pesquisa adicionais específicos. Por exemplo, easy-install mantém sua coleção de pacotes instalados, que são adicionados a um arquivo específico do sistema, por exemplo, no Ubuntu/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Em um sistema típico, existem vários desses arquivos .pth em torno dos quais podem explicar alguns caminhos inesperados no sys.path:Assim, é possível criar um arquivo .pth e colocar em qualquer um desses diretórios (incluindo o sitedir, como mencionado acima ). Esta parece ser a maneira como a maioria dos pacotes é adicionada ao sys.path em vez de usar o PYTHONPATH.
Nota: No OSX, há um caminho de pesquisa adicional especial adicionado por site.py para 'framework builds' (mas parece funcionar para o uso normal de python na linha de comando):
/Library/Python/<version>/site-packages
(por exemplo, para Python2.7:),/Library/Python/2.7/site-packages/
onde é suposto os pacotes de terceiros para ser instalado (consulte o arquivo LEIA-ME nesse diretório). Assim, pode-se adicionar um arquivo de configuração de caminho contendo caminhos de pesquisa adicionais, por exemplo, criar um arquivo chamado/Library/Python/2.7/site-packages/pip-usr-local.pth
contendo/usr/local/lib/python2.7/site-packages/
e, em seguida, o python do sistema adicionará esse caminho de pesquisa.fonte
Para mim, funcionou quando mudei o
.bash_profile
arquivo. Apenas mudando.bashrc
arquivo funcionou apenas até eu reiniciar o shell.Para python 2.7, ele deve se parecer com:
no final do
.bash_profile
arquivo.fonte
No linux, você pode criar um link simbólico do seu pacote para um diretório do PYTHONPATH sem precisar lidar com as variáveis de ambiente. Algo como:
fonte
Adicionar
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
ao ~ / .bashrc pode não funcionar sePYTHONPATH
não existir no momento (por causa do:
).Adicionar o acima ao meu ~ / .bashrc fez o truque para mim no Ubuntu 16.04
fonte
echo PYTHONPATH
e nada apareceu! isso significa que esse PYTHONPATH não foi iniciado, então colo essa linhaexport PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
no meu~/.bashrc
arquivo esource ~/.bashrc
nela. Mais tarde, quando eu ecoei $ PYTHONPATH, isso me deu:<PATH_TO_TF>/TensorFlow/models/research/object_detection
: Alguma sugestão sobre se eu fiz algo errado?export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, Quando você está exportando PYTHONPATH pela primeira vez você tem que fazê-lo sem a${PYTHONPATH}:
parte:<PATH_TO_TF>/TensorFlow/models/research/object_detection
e remove o segundoexport PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
. alguma sugestão sobre isso, como corrigi-lo?No MacOS, em vez de dar caminho para uma biblioteca específica. Fornecendo o caminho completo para a pasta do projeto raiz em
fiz o meu dia, por exemplo:
depois disso faça:
fonte
Só para acrescentar sobre a resposta de awesomo, você também pode adicionar essa linha em seu
~/.bash_profile
ou~/.profile
fonte
.bash_profile
se você usar shell de login, caso contrário usar.profile
A inclusão de um novo caminho para PYTHONPATH está fazendo manualmente:
adicionando o caminho ao seu perfil ~ / .bashrc, no terminal:
cole o seguinte no seu perfil
então, certifique-se de fornecer seu perfil bashrc sempre que executar seu código no terminal:
Espero que isto ajude.
fonte
Eu adicionei permanentemente no Windows Vista, Python 3.5
Sistema> Painel de controle> Configurações avançadas do sistema> Avançadas (toque em) Variáveis de ambiente> Variáveis do sistema> (se você não vir PYTHONPATH na coluna Variável) (clique em) Novo> Nome da variável: PYTHONPATH> Valor da variável:
Por favor, escreva o diretório no valor Variável. São detalhes da resposta do Blue Peppers.
fonte
O script abaixo funciona em todas as plataformas, pois é puro Python. Ele usa o pathlib Path, documentado aqui https://docs.python.org/3/library/pathlib.html , para fazê-lo funcionar em várias plataformas. Você executa uma vez, reinicia o kernel e é isso. Inspirado em https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .
fonte
Esta é uma atualização para este tópico que possui algumas respostas antigas.
Para aqueles que usam o MAC-OS Catalina ou algum mais recente (> = 10.15), foi introduzido um novo terminal chamado
zsh
(um substituto para o antigobash
).Eu tive alguns problemas com as respostas acima devido a essa alteração e, de certa forma, fiz uma solução alternativa ao criar o arquivo
~/.zshrc
e colar o diretório do arquivo no diretório$PATH
e$PYTHONPATH
Então, primeiro eu fiz:
Quando o editor foi aberto, colei o seguinte conteúdo:
salvou e reiniciou o terminal.
IMPORTANTE: O caminho acima é definido como o caminho do meu computador, você precisa adaptá-lo ao seu python.
fonte
No Python 3.6.4, você pode persistir o sys.path em sessões de python como esta:
Eu sugiro fortemente que você use virtualenv e virtualenvwrapper, caso contrário você irá desorganizar seu caminho
fonte
O caminho mais curto entre A <-> B é uma linha reta;
fonte