Syntax error when importing a file which starts with a number

MRAB google at mrabarnett.plus.com
Mon Mar 23 19:21:17 CET 2009


simon.woolf at gmail.com wrote:
> Hello, all.
> 
> I don't suppose anyone has any idea why it seems to be impossible to
> import any file which starts with a number?  You get a syntax error,
> whether the file exists or not.
> 
> Try it yourself:
> 
>>>> import foo
> ImportError: No module named foo
> 
>>>> import 1foo
>   File "<stdin>", line 1
>     import 1foo
>            ^
> SyntaxError: invalid syntax
> 
> Is this just me, or has anyone else run into it?  Is it a known bug?
> (If so, I can't find it on a bug tracker or in any Google searches).
> 
> It's a bit annoying, as I have an enforced naming scheme.  Any way
> round it?
> 
A module name must be a valid identifier. For example, if you do:

     import foo

then you can write:

     foo.bar()

but if it allowed:

     import 1foo

then you'd be stuck because you can't write:

     1foo.bar()

You also aren't allowed to have spaces in a name, so no, it's not a bug.

I suppose that if there was a demand for this kind of thing then quoting
could be used for the filename:

     import "1foo" as one_foo



More information about the Python-list mailing list