tags:

views:

580

answers:

4

Basically when I have a python file like:

python-code.py

and use:

import (python-code)

the interpreter gives me syntax error.

Any ideas on how to fix it? Are dashes illegal in python file names?

+4  A: 

The problem is that python-code is not an identifier. The parser sees this as python minus code. Of course this won't do what you're asking. You will need to use a filename that is also a valid python identifier. Try replacing the - with an underscore.

TokenMacGuy
+13  A: 

You should check out PEP 8, the Style Guide for Python Code:

Package and Module Names Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.

Since module names are mapped to file names, and some file systems are case insensitive and truncate long names, it is important that module names be chosen to be fairly short -- this won't be a problem on Unix, but it may be a problem when the code is transported to older Mac or Windows versions, or DOS.

In other words: rename your file :)

Paolo Bergantino
+1 as dashes seem very unpythonic imo
ChristopheD
Thanks, I didn't know this.
Joan Venge
the problem has nothing to do with style, it's a _syntax_ _error_
hop
+1  A: 

You could probably import it through some __import__ hack, but if you don't already know how, you shouldn't. Python module names should be valid variable names ("identifiers") -- that means if you have a module foo_bar, you can use it from within Python (print foo_bar). You wouldn't be able to do so with a weird name (print foo-bar -> syntax error).

John Millikin
+2  A: 

One other thing to note in your code is that import is not a function. So import(python-code) should be import python-code which, as some have already mentioned, is interpreted as "import python minus code", not what you intended. If you really need to import a file with a dash in its name, you can do the following::

python_code = __import__('python-code')

But, as also mentioned above, this is not really recommended. You should change the filename if it's something you control.

Rick Copeland