Любая проверка, чтобы видеть, написан ли код в Python 2.7 или 3 и выше?

У меня глючный длинный Python-проект, который я пытаюсь отладить. Это грязно и без документов. Я знаком с python2.7. В этом проекте нет бинарных файлов. Прямая идея состоит в том, чтобы попытаться выполнить это как python2.7 file.py или же python3 file.py и посмотрим, что работает. Но, как я уже сказал, во многих местах он уже глючит. Так что ни один из них не работает. Есть ли какая-либо проверка, метод или редактор, которые могли бы сказать мне, был ли код написан на python2.7 или python3?

3 ответа

Попытайтесь скомпилировать его. Если скрипт использует синтаксис, специфичный для версии, компиляция завершится неудачно.

$ python2 -m py_compile foo.py
$ python3 -m py_compile foo.py

Следующие утверждения указывают на Python 2.x:

import exceptions

for i in xrange(n):
  ...

print 'No parentheses'

# raw_input doesn't exist in Python 3
response = raw_input()

try:
   ...
except ValueError, e:
   # note the comma above
   ...

Они предполагают Python 2, но могут проявляться как старые привычки в коде Python 3:

'%d %f' % (a, b)

# integer divisions
r = float(i)/n # where i and n are integer
r = n / 2.0

Скорее всего, это Python 3:

# f-strings
s = f'{x:.3f} {foo}'

# range returns an iterator
foo = list(range(n))

try:
   ...
except ValueError as e:
   # note the 'as' above
   ...

Используйте это в своем коде:

import platform
print platform.python_version()

выводит строку: 2.7.10

Добавьте эту строку в файл:

help()

это должно автоматически напечатать версию вместе с интерфейсом справки по умолчанию. не забудьте удалить это позже.

Другие вопросы по тегам