Desde a atualização para o Python 3.4, todos os comandos interativos são registrados ~/.python_history
. Não quero que o Python crie ou grave neste arquivo.
Criando um link simbólico para /dev/null
não funciona, o Python remove o arquivo e o recria. A documentação sugere excluir sys.__interactivehook__
, mas isso também remove o preenchimento de guias. O que deve ser feito para desativar a gravação desse arquivo de histórico, mas ainda preservar o preenchimento de guias?
Detalhes adicionais:
- Distro: Arch Linux x86_64
- readline 6.3-3
- python 3.4.0-2
python
interactive
Lekensteyn
fonte
fonte
chattr
. Estou procurando um único arquivo de configuração (usuário) ou variável de ambiente.chmod
é a solução sugerida pelos desenvolvedores python neste relatório de bug de algumas semanas atrás, embora também haja alguma menção a~/.inputrc
ele (não existeman readline
, BTW, exceto a função de biblioteca).inputrc
entanto, eu não sei como usar echmod
também não funciona para mim; o arquivo é modificado de qualquer maneira (Arch Linux). Existe umainfo inputrc
página, mas geralmente não estou tão feliz com a leitura de páginas de informações, pois elas são difíceis de navegar.Respostas:
No Python 3.6, você pode usar o readline.set_auto_history para desativar isso:
fonte
Isso funciona para mim.
Criando
~/.pythonrc
arquivo:Em seguida, exporte-o:
fonte
set_history_length
que algo mágico? O preenchimento de tabulação é feito para funções, não para histórico.~/.python_history
com que seja gravado (verificado comPYTHONSTARTUP=$HOME/.pythonrc strace -e file,write -o /tmp/st python
). Começo a pensar que não há como desativar isso, mas mantenha a conclusão da guia sem duplicar o código/usr/lib/python3.4/site.py
.Outra solução ~ / .pythonrc:
fonte
Para impedir a gravação do Python
~/.python_history
, desative o gancho que ativa essa funcionalidade:Se você deseja ativar o preenchimento de guias e desativar o recurso de histórico, pode adaptar o
site.enablerlcompleter
código. Escreva o código a seguir~/.pythonrc
e definaexport PYTHONSTARTUP=~/.pythonrc
no seu shell para habilitá-lo.fonte
Até que seja corrigido de alguma forma no próprio Python, você pode fazer isso nos sistemas UNIX:
Depois disso, você estará recebendo
toda vez que você encerra um shell python. O status de saída ainda será
0
.Observe que, se você o deixar como arquivo, precisará criar e tornar imutável outro arquivo,
~/.python_history
fonte
Coloque o seguinte em um arquivo e defina
PYTHONSTARTUP
-o (ou chame o arquivositecustomize.py
e torne-o acessível a partir dePYTHONPATH
)Dessa forma, você ainda terá acesso ao preenchimento de guias e ao histórico anterior, mas os comandos inseridos não serão adicionados ao arquivo do histórico.
fonte
PYTHONSTARTUP
script seja realmente executado.Aqui está o meu método (que acabou por ser basicamente uma versão mais confiável e pitônica do método de berdario). Desativa apenas gravar
.python_history
, mas não ler, se existir, ou anexar novas linhas ao histórico da instância atual. Eu recomendo salvá-lo comosite-packages/sitecustomize.py
, porquesite
é o módulo que grava.python_history
e importa,sitecustomize
se existir , embora nomear outra coisa e apontar para elaPYTHONSTARTUP
também funcione.update: o que fiz para o 3.7, específico do meu sistema, não o pep8:
fonte
Minha solução atual (para versões suficientes do Python 3) impede o uso padrão de ~ / .python_history, mas deixa a possibilidade de gravação explícita do histórico em um determinado arquivo (usando readline.write_history_file (nome do arquivo) ou readline.append_history_file (... )) deve ter o seguinte no arquivo PYTHONSTARTUP:
Tem o efeito colateral agradável (para mim) rotular qualquer histórico explicitamente escrito com o tempo de inicialização do intérprete. Ele funciona devido à correção do bug 5845, que pode ser vista aqui .
fonte