[Python-Dev] Re: from ... import * ([Python-checkins] CVS: python/dist/src/Python compile.c,2.153,2.154)

M.-A. Lemburg mal@lemburg.com
Wed, 31 Jan 2001 18:57:20 +0100


Jeremy Hylton wrote:
> 
> >>>>> "MAL" == M -A Lemburg <mal@lemburg.com> writes:
> 
>   >> Modified Files: compile.c Log Message: Enforce two illegal import
>   >> statements that were outlawed in the reference manual but not
>   >> checked: Names bound by import statemants may not occur in global
>   >> statements in the same scope. The from ... import * form may only
>   >> occur in a module scope.
>   >>
>   >> I guess these changes could break code, but the reference manual
>   >> warned about them.
> 
>   MAL> Jeremy, your code breaks all uses of "from package import
>   MAL> submodule" inside packages.
> 
>   MAL> Try distutils for example or setup.py....
> 
> Quite aside from whether the changes should be preserved, I don't see
> how "from package import submodule" is affected.  I ran setup.py
> without any problem; I wouldn't have been able to build Python
> otherwise.  I wrote some simple test cases and didn't have any trouble
> with the form you describe.

Perhaps you still had old .pyc files in your installation dir ?
 
> Can you provide a concrete example?  It may be that something other
> than the changes mentioned above that is causing you problems.

The distutils code is full of imports like these (and other
code I'm running is too):

distutils/cmd.py:

    def __init__ (self, dist):
        """Create and initialize a new Command object.  Most importantly,
        invokes the 'initialize_options()' method, which is the real
        initializer and depends on the actual command being
        instantiated.
        """
        # late import because of mutual dependence between these classes
        from distutils.dist import Distribution

This is the report I got from Benjamin Collar:

> I've gotten the newest CVS tarball, but setup.py is still not
> working; this time with a different error. I will resubmit a bug on
> sourceforge if that's the proper way to handle this. Here's the error:
> 
> ./python ./setup.py build
> Traceback (most recent call last):
>   File "./setup.py", line 12, in ?
>     from distutils.core import Extension, setup
>   File "/usr/src/python/dist/src/Lib/distutils/core.py", line 20, in ?
>     from distutils.cmd import Command
>   File "/usr/src/python/dist/src/Lib/distutils/cmd.py", line 15, in ?
>     from distutils import util, dir_util, file_util, archive_util,
> dep_util
> SyntaxError: 'from ... import *' may only occur in a module scope
> make: *** [sharedmods] Error 1

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company:                                        http://www.egenix.com/
Consulting:                                    http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/