Como adiciono o preenchimento de guias ao shell do Python?

125

Ao iniciar um aplicativo django usando python manage.py shell, recebo um shell InteractiveConsole - posso usar o preenchimento de guias etc.

Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

Ao iniciar um interpretador python usando python, ele não oferece a conclusão da guia.

Alguém pode me dizer o que o django está fazendo para me fornecer um console interativo ou o que preciso fazer para iniciar um console interativo sem um aplicativo django?

ashchristopher
fonte
1
Quando você digita python, recebe um prompt >>>, certo? Essa é a concha interativa. Qual a sua pergunta?
315/08 S.Lott
4
Não oferece preenchimento de guias. Esse é o problema.
Ashchristopher # 29/08
Atualize sua pergunta para especificar isso.
Daryl Spitzer

Respostas:

210

Eu posso ter encontrado uma maneira de fazê-lo.

Crie um arquivo .pythonrc

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Em seguida, no seu arquivo .bashrc, adicione

export PYTHONSTARTUP=~/.pythonrc

Isso parece funcionar.

ashchristopher
fonte
2
isso funciona para o Jython, onde IPython e bpython não estão disponíveis no momento.
Skylar Saveland
1
Por alguma razão, o exemplo acima funcionou para mim no meu mac antigo com "leão da montanha", mas não estava funcionando para o novo mac com "el captan". Eu preciso source ~/.bashrcsempre fazê-lo funcionar antes de iniciar o interpretador python. Alguma dica?
15 de
1
@hmi Tente unificar seu .bashrce .bash_profilecomo sugerido na parte inferior desta página: joshstaiger.org/archives/2005/07/bash_profile_vs.html Ele também fornece informações sobre a diferença entre eles. Pode não resolver o problema, mas pode ajudar.
Dangercrow 21/10
@hmi Tente colocá-lo /etc/bashrc, em vez de ~/.bashrc.
vozes
Apenas para referência - provavelmente voltei a esta resposta mais vezes do que qualquer outra no StackOverflow, então, obrigado.
Timmins
10

Eu uso o ptpython. https://github.com/jonathanslenders/ptpython/

O ptpython é uma ferramenta maravilhosa de preenchimento automático do cmd do shell. instalar ptpython é muito fácil, use a ferramenta pip

pip install ptpython

e para o django shell, você deve importar o ambiente do django, como este

importação os

os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "testweb.settings")

Confie em mim, esta é a melhor maneira para você !!!

alan_wang
fonte
5

correção para shell windows10:

  • pip install pyreadline
  • pip instala ipython [shell]
Mr.B
fonte
4

Parece que python3 está pronto para uso!

Michel Samia
fonte
1

No Python3, esse recurso é ativado por padrão. Meu sistema não tinha o móduloreadline instalado. Eu estou no Manjaro. Eu não enfrentei esse problema de conclusão de guia em outras distribuições linux (elementar, ubuntu, mint).

Depois de pipinstalar o módulo, durante a importação, estava lançando o seguinte erro -

ImportError: libncursesw.so.5: cannot open shared object file: No such file or directory

Para resolver isso, eu corri

cd /usr/lib ln -s libncursesw.so libncursesw.so.5

Isso resolveu o erro de importação. E também trouxe a conclusão da guia no python repl sem nenhuma criação / alteração de .pythonrce .bashrc.

TrigonaMinima
fonte
0

Sim. Está embutido no 3.6.

fernanr @ gnuruwi ~ $ python3.6 Python 3.6.3 (padrão, 10 de abril de 2019 às 14:37:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] no linux Digite "help", "copyright "," créditos "ou" licença "para mais informações.

importar os os. Exibir todas as 318 possibilidades? (y ou n) os.CLD_CONTINUED os.O_RDONLY os.ST_NOEXEC os.environ os.getpid (os.readlink (os.spawnvpe (os.CLD_DUMPED os.O_RDWR os.ST_NOSUID os.environb os.getppid (os.readv ( .st

Ruwinda Fernando
fonte
-1

Para versões mais antigas (2.x) acima, o script funciona como charme :)

fernanr@crsatx4 ~ $ cat .bashrc | grep -i python
#Tab completion for python shell
export PYTHONSTARTUP=~/.pythonrc
fernanr@crsatx4 ~ $ . ~/.bashrc
fernanr@crsatx4 ~ $ echo $?
0
fernanr@crsatx4 ~ $ python2
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.
Display all 249 possibilities? (y or n)
os.EX_CANTCREAT             os.O_WRONLY                 
Ruwinda Fernando
fonte
Sua resposta parece estar faltando o conteúdo de "~ / .pythonrc"
MadMike