Python kabuğuna sekme tamamlamayı nasıl eklerim?


125

Kullanarak bir django uygulaması başlatırken python manage.py shell, bir InteractiveConsole kabuğu alıyorum - Sekme tamamlama vb. Kullanabilirim.

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)

Kullanarak bir python yorumlayıcı başlatırken python, sekme tamamlama sunmaz.

Birisi bana django'nun etkileşimli bir konsol vermek için ne yaptığını veya bir django uygulaması olmadan etkileşimli bir konsol başlatmak için ne yapmam gerektiğini söyleyebilir mi?


1
Python yazdığınızda, bir >>> istemi alırsınız, değil mi? Bu etkileşimli kabuktur. Sorunuz nedir?
S.Lott

4
Sekme tamamlama sunmaz. Sorun bu.
ashchristopher

Lütfen bunu belirtmek için sorunuzu güncelleyin.
Daryl Spitzer

Yanıtlar:


210

Bunu yapmanın bir yolunu bulmuş olabilirim.

.Pythonrc dosyası oluşturun

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

sonra .bashrc dosyanıza şunu ekleyin:

export PYTHONSTARTUP=~/.pythonrc

Bu işe yarıyor gibi görünüyor.


2
bu, IPython ve bpython'un şu anda mevcut olmadığı Jython için çalışır.
Skylar Saveland

1
Bazı nedenlerden dolayı, yukarıdakiler benim için eski mac'umda "dağ aslanı" ile çalıştı ama "el captan" ile yeni mac için çalışmadı. source ~/.bashrcPython yorumlayıcısına başlamadan önce her zaman çalışmasını sağlamam gerekiyor . Herhangi bir ipucu?
hi15

1
@hmi Kendinizi .bashrcve .bash_profilebu sayfanın altında önerildiği gibi birleştirmeyi deneyin : joshstaiger.org/archives/2005/07/bash_profile_vs.html Ayrıca aralarındaki farklar hakkında bilgi sağlar. Sorunu çözmeyebilir, ancak yardımcı olabilir.
Dangercrow

@hmi koyarak deneyin /etc/bashrcyerine, ~/.bashrc.
sesler

Sadece referans için - Muhtemelen bu yanıta StackOverflow'daki diğerlerinden daha fazla döndüm, bu yüzden teşekkürler.
timmins



10

Ptpython kullanıyorum. https://github.com/jonathanslenders/ptpython/

ptpython harika bir araç otomatik tamamlama kabuk cmd'sidir. ptpython'u kurmak çok kolaydır, pip aracını kullanın

pip ptpython yüklemek

ve django kabuğu için, django ortamını şu şekilde içe aktarmalısınız:

işletim sistemini içe aktar

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

İnan bana, bu senin için en iyi yol !!!


5

windows10 kabuğu için düzeltme:

  • pip pyreadline yüklemek
  • pip ipython [kabuk] yükle


1

Python3'te bu özellik varsayılan olarak etkindir. Sistemimde modül readlinekurulu değildi. Manjaro'dayım. Diğer linux dağıtımlarında (temel, ubuntu, nane) bu sekme tamamlama sorunuyla karşılaşmadım.

pipModülü kurduktan sonra içe aktarırken şu hatayı veriyordu:

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

Bunu çözmek için koştum ...

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

Bu, içe aktarma hatasını çözdü. Ve, aynı zamanda herhangi oluşturma / değişiklik olmadan piton repl sekme tamamlama getirdi .pythonrcve .bashrc.


0

Evet. 3.6'da yerleşiktir.

fernanr @ gnuruwi ~ $ python3.6 Python 3.6.3 (varsayılan, 10 Nisan 2019, 14:37:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] linux üzerinde "yardım" yazın, telif hakkı Daha fazla bilgi için "," kredi "veya" lisans ".

os işletim sistemini içe aktar. 318 olasılığın tümü görüntülensin mi? (y veya 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 (os)) .st


-1

Eski sürümler için (2.x) yukarıdaki komut dosyası çekicilik gibi çalışır :)

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                 

Yanıtınızda "~ / .pythonrc" içeriği eksik görünüyor
MadMike
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.