PyWart: Import resolution order
88888 Dihedral
dihedral88888 at googlemail.com
Sat Jan 12 22:56:22 EST 2013
Ian於 2013年1月12日星期六UTC+8下午3時36分43秒寫道:
> On Fri, Jan 11, 2013 at 10:28 PM, Rick Johnson
>
> <rantingrickjohnson at gmail.com> wrote:
>
> > On Friday, January 11, 2013 12:30:27 AM UTC-6, Chris Angelico wrote:
>
> >> Why is it better to import from the current directory first?
>
> >
>
> > Opps. I was not explicit enough with my explanation :). I meant, "look in the current directory FIRST when in a package". Since many times (most all times) packages will contain many sub-modules that need to be imported into the package's main.py module, and sometimes these modules will have the same name as a stdlib module, then looking in the package FIRST makes sense.
>
>
>
> And again, in Python 2.x this is already the case. When importing in
>
> a package, it tries to do a relative import before it even looks at
>
> sys.path.
>
>
>
> > I think if python where *strict* about full paths for non-builtins, then we would be in a better place.
>
>
>
> And again, in Python 3, where implicit relative imports have been
>
> removed from the language, it already is strict about using full
>
> paths. You can still do relative imports, but you have to be explicit
>
> about them.
>
>
>
> > For instance you could create a package named "chris" and then have a module named math exist inside. Alternatively if you choose to be a non-professional and create a math module without a containing package, python would throw the module into the default "lib" package. The only way you could access your math module now would be by using the path "lib.math".
>
>
>
> What if I create a package named "math"? Does that also automatically
>
> get renamed to "lib.math"? How is it decided what package names are
>
> proper; is it just because it happens to clash with a stdlib name that
>
> the package gets magically renamed?
>
>
>
> What if I create a package, and then later a module with the same name
>
> happens to be added to the stdlib? My program that uses the package
>
> just breaks because it no longer imports the correct thing?
>
>
>
> > Damn i am full of good ideas!
>
>
>
> Your ideas might be better if you first spent some time gaining a
>
> better understanding of how the language works as is.
OK, I think to develop a GUI with auto-code
translations in an IDE with python as the CAD/CAM scripting language can be helpful.
But usually this kind of sotware projects is in the
commercial part.
More information about the Python-list
mailing list