2011-11-23 82 views
0

我安装了ipython(0.12.dev),并且我注意到我不能在因名称冲突而导致模块名为path的项目中使用它。这是可以理解的,但问题是,当我导入模块完整路径时,我关心的子模块不在那里。从python导入模块使子模块消失

举例来说,如果我在一个正常的运行这个(没有path)导演:

>>> import IPython.external.path 
>>> dir(IPython.external.path) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_path', 'path'] 

但是,如果我在其中有一个模块path(或只是mkdir path; touch path/__init__.py)项目运行:

>>> import IPython.external.path 
>>> dir(IPython.external.path) 
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__'] 

最后两个子模块(_pathpath)缺失。

有没有办法访问这些模块?

回答

1

path是IPython将尝试使用的第三方库,如果它存在。不幸的是,这意味着它会尝试在工作目录中使用路径模块或程序包。

一个简单的解决方法是在另一个目录中启动IPython,然后在IPython中启动cd myproject(但这样您将无法使用路径模块)。

要访问IPython附带的路径模块,请执行from IPython.external.path import _path。您可以修改IPython/external/path/__init__.py,以便直接访问包含的副本。

+0

谢谢,目录技巧完美工作。我并不需要IPython的路径模块,只要它对这个技巧感到满意。 – Nova