2015-05-12 25 views
13

Konsolu (/ bin/bash) bulunmayan bir komutu (örneğin, $ a) çağırmaya çalıştığımda, yorumlayıcı uzun bir süre bekler. Ve bunu (^ C) keserken, Python yorumlayıcısından bir hata mesajı alıyorum. Bunun yerine, komutanın tanınmamış olduğunu söylemesini bekliyorum. Bu neden oluyor?Bash'ta tanınmayan komutlar python yorumlayıcısı tarafından yakalanır

$ a 
^C 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/encodings/__init__.py", line 32, in <module> 
[email protected]:/home/antonio/workspace/biz_index#  from encodings import aliases 
    File "/usr/lib/python2.7/encodings/aliases.py", line 17, in <module> 
    """ 
KeyboardInterrupt 
^C 
+5

Sizin PATH'nizde neler var? –

+3

"a" nin sonucu nedir? –

+2

Bu yalnızca belirli bir dizinde veya her yerde olur mu? Kendi kodunuzla birlikte bir Python paketini yanlışlıkla gölgelediniz. –

cevap

7

PATH="" ayarlandığında, bir şey, bir yerde command-not-found paketi tarafından çağrılan bir python paketini gölgelendiriyor. Son zamanlarda kendim struct.py adlı bir senaryo yazarak yaptım. Sen, yoldaki her dizin üzerinden yani

/home/antonio/.local/bin 
/home/antonio/.local/bin 
/usr/local/sbin 
/usr/local/bin‌​ 
/usr/sbin 
/usr/bin 
/sbin 
/bin 
/usr/games 
/usr/local/games 

gidip orada .py dosyalar için bakmak gerekir. Bunlardan biri yerleşik Python paketlerinden biriyle bir isim paylaşıyor. Alternatif olarak, dizinleri PATH'dan kaldırabilir ve hangisinin bozulduğunu öğrenene kadar tekrar ekleyebilirsiniz. Bulunduğunuzda onu silmeniz veya yeniden adlandırmanız gerekir.

İşte sizin için bunu yapmak için bir Kabuğu tek astar var:

for dir in $(echo $PATH | tr ":" "\n"); do ls -1 $dir | grep "[.]py"; done 

Sen (önce birkaç gün yeniden hatamı) Aşağıdaki deneyerek kendi kabuğunda bu test edebilirsiniz:

geçerli dizinde kaldıkları zaman kabuğunda Şimdi
echo 'print("HELLO WORLD")' >> struct.py 

, ben bakın: Muhtemelen

➜ client git:(master) ✗ a 
HELLO WORLD 
zsh: command not found: a 

Python komut o Davanızdaki gölgelemeyi yapmak, sadece "HELLO WORLD" basmaktan çok kaynak yoğunlaştırıyor, dolayısıyla asılı duruyor.

16

Bir ubuntu makineniz var mı? Ubuntu, python'da uygulanan bir command-not-found package'a sahiptir, bunu kesintiye uğramış olabilirsiniz.

Yolunuzda, command-not-found paketiyle aynı ada sahip bir betik olabilir. Varsa, bu betik muhtemelen asılı olanı yapar. Yolunuzu okunabilir bir şekilde yazdırmak için echo $PATH | tr -s ':' '\n''u çalıştırın.

+0

Evet, Ubuntu. Nasıl düzeltebilirim o zaman? – AntonioRomero

+0

@AntonioRomero Yanıtımın askıya alınmadığını kabul ediyorum. Konuştuğumuz gibi araştırmak ... – EvenLisle

İlgili konular