All-numeric script names and import

Dave Angel davea at davea.name
Wed May 21 10:32:23 EDT 2014


Chris Angelico <rosuav at gmail.com> Wrote in message:
> If I have a file called 1.py, is there a way to import it? Obviously I
> can't import it as itself, but in theory, it should be possible to
> import something from it. I can manage it with __import__ (this is
> Python 2.7 I'm working on, at least for the moment), but not with the
> statement form.
> 
> # from 1 import app as application # Doesn't work with a numeric name
> application = __import__("1").app
> 
> Is there a way to tell Python that, syntactically, this thing that
> looks like a number is really a name? Or am I just being dumb?
> 
> (Don't hold back on that last question. "Yes" is a perfectly
> acceptable answer. But please explain which of the several
> possibilities is the way I'm being dumb. Thanks!)
> 

I don't think there's any question of dumbhood,  but the answer
 should be found in the formal grammar document. 

https://docs.python.org/2/reference/grammar.html

The import statement is defined as:
   
import_name: 'import' dotted_as_names

and dotted_as_names is defined as:

dotted_as_names: dotted_as_name (',' dotted_as_name)*

continuing thusly:

import_as_name: NAME ['as' NAME]
dotted_as_name: dotted_name ['as' NAME]

So it comes down to the definition of NAME, which doesn’t seem to
 be on that page. That's the one which has to start with
 underscore or letter,  followed by zero or more letter,  digits,
 ...





-- 
DaveA




More information about the Python-list mailing list