Python PyDev, предотвращение возврата каретки из input () - PullRequest
0 голосов
/ 18 августа 2010

EDIT-4

Я получил мой sitecustomize.py для выполнения, но он выдает ошибку. Вот код для него.

Ошибка:

Error in sitecustomize; set PYTHONVERBOSE for traceback:
RuntimeError: maximum recursion depth exceeded while calling a Python object

Я еще не очень хорошо разбираюсь в Python, поэтому я решил закомментировать только те строки, которые, по моему мнению, мне не понадобятся.Никаких проблем с кодированием не видно, поэтому я просто закомментировал строки 23-104, но это тоже не помогло.

EDIT-3

У меня также было установлено 2.5.1,поэтому я скомпилировал другой сценарий с этим.

print 'This will test carriage returns on Windows with PyDev on Eclipse Helios'
print'Type something:',
test = raw_input()
print('You entered the following ascii values:')
for c in test:
    print(str(ord(c)))

Это работало нормально и привело к

This will test carriage returns on Windows with PyDev on Eclipse Helios
Type something: g
You entered the following ascii values:
103

Так что это возможно только для Python3?Я знаю, что это не переводчик, потому что я могу запустить его в командной строке просто отлично.Что дает?

EDIT-2

Только что протестировано с Helios, все еще с той же проблемой.Вот моя тестовая программа:

print('This will test carriage returns on Windows with PyDev on Eclipse Helios.')
print('Type something:', end='')
test = input()
print('You entered the following ascii values:')
for c in test:
    print(str(ord(c)))

А вот вывод, когда я набираю 'g' и нажимаю Enter:

This will test carriage returns on Windows with PyDev on Eclipse Helios.
Type something:g
You entered the following ascii values:
103
13

В общем, это небольшая проблема.Я мог бы использовать input (). Rstrip () , и это работает.Но обходной путь не должен быть даже необходимым.Я набираю вдвое больше, чем нужно на языке, который я использую, потому что он лаконичен и хорош.

EDIT-1

Это Eclipse 3.5.К сожалению, это последняя версия, которая была одобрена для использования на работе.Я собираюсь попробовать 3.6 дома, чтобы увидеть, если это не так, но я все равно не смог бы использовать его.


(оригинальный вопрос)

У меня естья изучал некоторый базовый Python и решил пойти с PyDev, так как он поддерживал Python 3, а также имел все приятные фрагменты кода и функции автозаполнения.

Однако я сталкиваюсь с этой заштрихованной проблемой возврата каретки вWindows.

Мои поиски всегда возвращают меня к этому списку рассылки: http://www.mail-archive.com/python-list@python.org/msg269758.html

Поэтому я взял файл sitecustomize.py, попытался включить его в путь Python для моего сконфигурированного интерпретатора, а также для моего проекта, но безрезультатно.

Кто-нибудь еще справился с этим?Или, может быть, знает, как заставить новый sitecustomize.py действительно выполняться, чтобы он мог переопределять input () и raw_input ()?

Я знаю, что всегда мог сделать короткий модуль со своей собственной функцией input input (),но я бы очень хотел исправить проблему в корне.Aptana признает проблему (http://pydev.org/faq.html#why_raw_input_input_does_not_work_correctly), но не предлагает решения.Заранее спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Разобрался с хаком, чтобы он работал локально для моей установки Python. В \ Lib \ site-packages \ создайте скрипт с именем "sitecustomize.py" и вставьте в него следующий код:

original_input = builtins.input

def input(prompt=''):  
    return original_input(prompt).rstrip('\r')

input.__doc__ = original_input.__doc__

builtins.input = input

Я не знаю ничего о побочных эффектах этого или о том, какую проверку ошибок мне следует делать, но это работает, если вы используете PyDev в Windows для написания скриптов с Python3.

0 голосов
/ 19 августа 2010

Узнайте больше о sitecustomize.py и о том, как он относится к site.py.

Я не знаю, как добавить свой собственный sitecustomize.py в PYTHONPATH для выполнения только в проекте PyDev, поэтому я просто добавил его в $ {Python31dir} \ Libs \ site-packages. Модуль работает сейчас, но выдает ошибки.

...