2017-02-06 3 views
-2

Некоторые из файлов в моем приложении предназначены только для python 3.Как игнорировать определенный файл для конкретной версии python

Могу ли я игнорировать этот файл, если код работает на python 2?

Пример:

import sys 
if sys.version_info.major < 3: 
    return # this doesn't work 

<other code should to be ignored for python < 3> 

Я знаю, что могу сделать это так:

import sys 
if sys.version_info.major < 3: 
    pass 
else: 
    <other code should to be ignored for python < 3> 

Но вопрос, я могу избежать включать весь контекст файла внутри else рамки?

Альтернативный вопрос, могу ли я просто исключить этот файл из __init__.py?

+2

Может быть, лучше, чтобы сделать заявление импорта импортируемого файла обусловливающие версии питона. Вы можете просто добавить утверждение в эти файлы, чтобы убедиться, что они случайно не импортированы из-за неправильной версии python. –

+0

Что значит «файлы в моем модуле»? Вы имеете в виду «модули в моем пакете»? –

+0

Отредактированный вопрос, это не пакет. Просто обычное приложение. И спасибо за отрицательные голоса. – Kostanos

ответ

0

На данный момент я только нашел это решение: https://github.com/evanplaice/pypreprocessor/blob/master/Examples/py2and3.py

Он требует, чтобы использовать pypreprocessor пакет и он имитирует директивы препроцессора в стиле C. Так что мой код будет таким образом:

import sys 
from pypreprocessor import pypreprocessor 

#exclude 
if sys.version_info.major < 3: 
    pypreprocessor.defines.append('python3') 

pypreprocessor.parse() 
#endexclude 

#ifdef python3 
# <other code should to be ignored for python < 3> 
#endif 

Пожалуйста, пост и другие решения, если у вас есть какие-либо

Смежные вопросы