the problem of import module

Peter Otten __peter__ at web.de
Fri Mar 7 03:02:55 EST 2008


fts2012 at gmail.com wrote:

> follow the dive into python
> -----------------------------------------------------------------
>>>> import sys
>>>> sys.path
>>>> sys.path.append('E
\achieve\book\diveintopython-pdfzh-cn-5.4b\diveintopythonzh-cn-5.4b\py')
> -----------------------------------------------------------------
> I append the filepath of <<dive into python>>'s examples into
> sys.path,but
> -----------------------------------------------------------------
>>>> sys.path
> ['C:\\Python25\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python25.zip',
> 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-
> win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\
> \site-packages', 'E:\x07chieve\x08ook\\diveintopython-pdfzh-cn-5.4b\
> \diveintopythonzh-cn-5.4b\\py']
>>>> import fileinfo#fileinfo is a module in the path
> 
> Traceback (most recent call last):
>  File "<pyshell#5>", line 1, in <module>
>    import fileinfo
> ImportError: No module named fileinfo
> 
> -----------------------------------------------------------------
> Can anyone tell me the reason of the above and how to add  paths to
> python path except adding them in the enviroment path.
> Thanks.

The path you append to sys.path is not properly escaped:

>>> "E:\archive"
'E:\x07rchive' # \a has become the single character chr(7)

Use double backslashes or raw strings instead:

>>> "E:\\archive"
'E:\\archive'
>>> r"E:\archive"
'E:\\archive'

When you print it the extra backslash will be gone:

>>> print "E:\\archive" # \\ is the escape sequence for the backslash
E:\archive

Peter



More information about the Python-list mailing list