Проблемы с использованием набора исправлений Python 3to2 - PullRequest
2 голосов
/ 23 января 2012

Я новичок в программировании, и мне нужна помощь с набором исправлений для рефакторинга кода, написанного для Python 3.x, в код, который может работать на интерпретаторе 2.x.

У меня есть Python 3.2, но для доступа к головоломке Spotify (http://www.spotify.com/us/jobs/tech/best-before/) требуется, чтобы код был написан в 2.6. Поэтому я нашел укрыватель 3to2. У меня есть "3to2_py3k-1.0.tar.gz "vesion, которую вы можете скачать здесь: https://bitbucket.org/amentajo/lib3to2.

Файл README сообщает вам

(...) Run" ./3to2 "для преобразования stdin ("-"), файлов или каталогов, заданных в качестве аргументов. (...)

Текст на этом сайте идентичен файлу README.

Я понимаюэто я должен запустить командную строку и затем написать:

C: \ Python32> 3to2 Spotify.py

3to2 не распознается как команда intern или extern, программный файл или пакетный файл.

(вручную переведен с норвежского).

Я попытался найти путь к специальным файлам, но нет файла, которыйЯ назвал «3to2». Я попытался напрямую перейти к файлу «main.py» и «Spotify.py», и кажется, что что-то происходит (как будтоНемного секунды и не выдает ошибок), но когда я снова открываю «Spotify.py», к файлу ничего не происходит.

Я ценю любую помощь.


Спасибо, спатц, это очень помогло.Наконец мне удалось установить пакет по cd C:\Python32>python.exe setup.py install

В любом случае у меня все еще есть некоторые проблемы.Возьмите программу print("Hello World!") в качестве примера.Когда я запускаю python.exe 3to2 HelloWorld.py (он не работал без python.exe), он отвечает:

 RefractingTool: Skipping implicit fixer: collections
 RefractingTool: Skipping implicit fixer: int
 RefractingTool: Skipping implicit fixer: memoryview
 RefractingTool: Skipping implicit fixer: printfunction
 RefractingTool: Skipping implicit fixer: inittest
 RefractingTool: Refactored HelloWorld.py
 --- HelloWorld.py   (original)
 +++ HelloWorld.py   (refactored)
 @@ -1 +1 @@
 -print("Hello World!")
 +print u"Hello World!"
 RefactoringTool: Files that need to be modified:
 RefactoringTool: HelloWorld.py

Это действительно смешанные для меня сигналы.Прежде всего, кажется, что он пропускает некоторые исправления, например printfunction.Но позже это определенно выглядит так, как будто изменилось print("Hello World!") с print u"Hello World!", как и должно быть.Проблема в том, что когда я открываю этот файл в IDLE 3.2, файл имеет оригинальный код.Точно так же происходит с файлом Spotify.py.Достаточно ли «умна» IDLE, чтобы изменить этот простой код, чтобы он был совместим с 3.x, или набор исправлений 3to2 не работает?


РЕШЕНИЕ: Я понял это.Я должен был включить -w в качестве аргумента.Это преобразовало оригинальный файл в дополнение к созданию резервной копии файла .bak.

Спасибо всем, кто помог мне!

1 Ответ

5 голосов
/ 23 января 2012

Кажется, вы неправильно установили 3to2. Для установки сделайте следующее:

  1. Распакуйте загруженный файл .tar.gz в какой-то каталог
  2. cd в этот каталог и запустите python setup.py install

Теперь вы можете cd перейти в каталог, где находится Spotify.py, и запустить 3to2 Spotify.py, и оно должно работать.

...