Python没有模块错误

时间:2013-11-10 08:48:04

标签: python

以下控制台输出解释了问题

$ ls -r *
b:
y.py        __init__.py    
a:
x.pyc       x.py        __init__.pyc    __init__.py

L-IDC42NDV7M-M:pytest rohit$ python    
>>> import a.x as xx
>>> print xx.v
1

$ python b/y.py 
Traceback (most recent call last):
  File "b/y.py", line 1, in <module>
    import a.x as xx
ImportError: No module named a.x

如果python查看模块的当前工作目录,不应该'python b / y.py'找到/ x.py?

  

在Java中,可以导入兄弟模块。我正在寻找一些东西   类似于python。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Python不搜索当前目录(.)。但它会搜索包含输入脚本(./b)的目录。请参阅The Module Search Path

如果您想要搜索当前目录,可以使用PYTHONPATH=.

PYTHONPATH=. python b/y.py 

或使用-m option

python -m b.y

答案 1 :(得分:0)

主程序的目录会自动添加到Python路径中。主程序的模块名称为__main__,而不是b.y

您可以编写一个位于a和b的父目录中的简单主程序,也可以将该父目录添加到PYTHONPATH。

如果您调用python very/long/path/to/the/main/program.py,则并不意味着当前目录是深命名空间的根目录。我认为,在Java中,命名空间中的主程序相对较深,因此一切都不同。