2015-06-02 7 views
2

Есть ли реализованное программное решение для определения версии версии интерпретатора Python для недокументированного .py-модуля, за исключением ручного поиска исходного кода?Как определить версию интерпретатора Python для недокументированного .py-модуля?

$ python get_py_version my_module.py 
'2.6 version module' 

Проблема возникла после установки пакета недокументированного интерпретатора 3.x, чтобы обнаружить во время импорта есть print заявления от переводчика 2.x

+0

Неа, глядя на код довольно много его. Если разработчик не добавил документацию (docstrings, комментарии или явная проверка версии). –

+0

Просто запустите модуль тестирования модулей - если все тесты пройдены, модуль поддерживается вашим интерпретатором. Если это голой модуль без каких-либо тестов - ваша догадка так же хороша, как и моя. Насколько я знаю, для этой задачи нет общего решения. Конечно, вы можете попробовать использовать 2to3 и подготовить свой модуль вручную, но проблема все равно возникает - без набора тестов вы не можете знать, работает ли код. Любой код. –

+0

@MartijnPieters, который является отсутствующей функцией в Python, было бы легко реализовать как часть интерпретатора, чтобы вывести поддерживаемую версию из синтаксиса модуля –

ответ

1

Потому что это просто текстовый файл, нет никакого способа для вы автоматически узнаете, какая версия Python была написана. И я не знаю, есть ли большая мотивация, чтобы добавить это в язык, особенно учитывая, насколько это очевидно, когда у вас есть py3 vs файл py2 (поиск печати, проверка будущего импорта и т. д.).

Однако вы можете указать разницу, если вы ищете файл .pyc. Поскольку они были скомпилированы конкретным интерпретатором, обычно есть компонент файла, который дает шестнадцатеричное значение используемого интерпретатора.

Смотрите здесь более подробно: Is there a way to know by which Python version the .pyc file was compiled?