i looking way write python packages , modules makes them python 3 friendly , makes easy import them.
most common case have 1 major class want provide users, call mycode
.
your package named mycode
, put body of mycode class mycode/mycode.py
.
now, expect people 1 of these:
import mycode obj = mycode.myclass()
or:
from mycode import myclass() obj = myclass()
now, question should put inside __init__.py
in order make work, in both python 2.6+ , 3.x.
use absolute imports, it'll work fine across python versions. inside mycode/__init__.py
put:
from __future__ import absolute_import mycode.mycode import myclass
where __future__
import works python 2.5 , onwards; see pep 328. without absolute_import
import, import mycode
ambiguous; python 3 treat absolute , load top-level package, python 2 treats relative , import nested module instead.
the alternative use relative import:
from .mycode import myclass
which work across same spectrum of versions.
Comments
Post a Comment