Không thể nhập chữ cái bv trên vỏ Python trong OS X


8

Tôi gặp vấn đề với chữ "b" trong shell Python trong OS X. Tôi không thể gõ "b", nhưng "B" hoạt động tốt.

Làm thế nào tôi có thể giải quyết vấn đề này?


Bạn có ý nghĩa gì bởi "không thể gõ"? Một cái gì đó vật lý ngăn bạn nhấn phím b trừ khi bạn cũng nhấn Shift? Hoặc không có tác dụng từ việc nhấn nút? Hoặc bạn nhận được một số thông báo lỗi khi dòng chỉ chứa "b"?
Joachim Sauer

Chính xác là gì? Chính xác thì bạn đang làm gì / gõ vào, chính xác điều gì xảy ra và chính xác thông báo lỗi là gì (nếu có)?

Nếu không có chữ cái nào bị ảnh hưởng, nó có vẻ như là một vấn đề phần cứng với bàn phím của bạn và nên được di chuyển sang Super User.
pavium

Khi nhấn chữ "b" không có tác dụng và không gõ chữ "b" nhưng khi tôi nhấn chữ "B" (Shift + b) thì gõ chữ "B" trong bảng điều khiển

Câu trả lời:


9

Dòng có vấn đề trong bạn .pythonstartuplà một cái gì đó như:

 readline.parse_and_bind("bind ^I rl_complete") # darwin libedit

Điều này .pythonstartupsẽ khắc phục nó ...

try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    if 'libedit' in readline.__doc__:
        readline.parse_and_bind("bind ^I rl_complete")
    else:
        readline.parse_and_bind("tab: complete")

Điều đó đã giải quyết vấn đề tương tự cho tôi!
zmo

+1 Tôi vừa cài đặt python từ homebrew hôm qua và gặp vấn đề này sáng nay. Cập nhật tập tin khởi động python của tôi và mọi thứ đều tốt trở lại. Đó là một tác dụng phụ rất cụ thể (và cực kỳ kỳ lạ).
Seth

2

Đầu tiên, điều này đã không xảy ra cho đến khi tôi cập nhật python 2.7.1 lên 2.7.3. Điều đó nói rằng, sửa chữa là trên dòng:

dòng cũ:

if(sys.platform == 'darwin'): #FIX

dòng mới:

if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX

Mã đầy đủ trong ~ / .pythonrc của tôi

import atexit
import os
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    import sys
    if(sys.platform == 'darwin') and 'libedit' in readline.__doc__: #FIX
    # OSX
        readline.parse_and_bind ("bind ^I rl_complete")
    else:
    # Linux
        readline.parse_and_bind("tab: complete")

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del atexit, save_history, historyPath

1

Tôi có cùng một vấn đề. Điều này xảy ra khi bạn sử dụng phiên bản MacPorts của Python trong Snow Leopard.

Tôi không thấy vấn đề này trong Python của Apple đi kèm với Mac OS X. Vì vậy, cách giải quyết là phải đặt PYTHONPATHtrỏ đến các gói của MacPorts:

/opt/local/lib/python/site-packages:/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ 

(hoặc một phiên bản Python khác) và sử dụng Python của Apple.


1

Thật không may, cách giải quyết không phải là một cách khôn ngoan.

Apple giả định rằng phiên bản của nó không thay đổi khi thực hiện nâng cấp và các chức năng khác. Thay vào đó, bạn nên nâng cấp python hoặc mở rộng nó mà bạn cài đặt một phiên bản cục bộ, dưới /opthoặc thư mục nhà của bạn.

Tôi cũng gặp vấn đề tương tự và tôi không sử dụng phiên bản Macthon của python.


Tôi đang sử dụng phiên bản mới nhất của vpythonpython trực quan, từ www.vpython.org trong Mac OX X Lion đang chạy trong MacBook Air mới nhất (thế hệ 3).

Tôi đã cài đặt vpython bằng cách sử dụng nhị phân mới nhất của họ và sử dụng hướng dẫn của họ. Nó đi kèm với một trình cài đặt để nó là điểm và nhấp chuột. Đây là phiên bản sửa đổi của Python 2.7.1. Nó là phiên bản 32 bit. (Tôi tin rằng họ đã không chuyển nó thành 64 bit). Sau đó tôi đã cài đặt VPython-Mac-Py2.7-5.71. Tôi đã làm theo điều này bởi scipy từ www.scipy.org và matplotlib từ matplotlib.sourceforge.net Tất cả các cài đặt này đều sử dụng trình cài đặt.

Khi tôi chạy python khỏi công cụ phát triển của chúng, nhàn rỗi hoặc biến thể vpython, vidle, tôi không gặp vấn đề gì. Nếu tôi mở một thiết bị đầu cuối và chạy python từ shell bash, shell sẽ không nhận ra phím "b" trong bàn phím. Nó sẽ cung cấp cho bạn âm thanh 'chuông', thay vì nhập 'ký tự b'. Tuy nhiên, bạn có thể nhập chữ 'B'. Có vẻ như khóa này được ánh xạ tới một số 'ký tự' không hiển thị không chính xác, có thể là ký tự 'chuông' trong mã ASCII cũ.

Tôi đã thử thay đổi mô phỏng thành xterm, vt100, vt102. Tôi cũng đã chơi với các sơ đồ mã hóa khác nhau như chỉ sử dụng UTF-8. Tôi cũng nhấn tổ hợp các phím đặc biệt khác nhau như lệnh-b, v.v. Không có gì hoạt động.

Cách giải quyết duy nhất của tôi là viết các kịch bản không hoạt động hoặc vidle.

Tôi hy vọng điều này sẽ giúp làm rõ vấn đề.


Tôi đã làm việc nhiều hơn một chút về điều này ... có vẻ như những người khác cũng gặp vấn đề tương tự với các giao diện python khác. Trong hệ thống của tôi, tôi có tệp .pythonrc.py được phân tích cú pháp khi python khởi động (được chỉ ra bởi PYTHONSTARTUP). Trong tệp này, hai mô-đun được tải rlcompleter và readline. Sau đó, nó gọi readline.parse_and_bind ("bind -v"). Cuộc gọi này khởi tạo mô-đun readline bằng cách sao chép các liên kết từ shell (bạn có thể thấy mô-đun của mình bằng cách vào shell bash và gõ 'bind -v' (không có dấu ngoặc kép)). Một trong số này phải tạo ra vấn đề. Nếu tôi nhận xét dòng (đặt # ở phía trước của nó.), Vấn đề sẽ biến mất.
ga mercier

1
Bạn có thể chỉnh sửa bài đăng của mình để bao gồm điều đó, có thể giúp bạn dễ đọc hơn.
slhck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.