Python无modu

2024-10-02 12:30:16 发布

您现在位置: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查看模块的当前工作目录,‘pythonb/y.py’不应该找到a/x.py吗?你知道吗

In Java sibling modules can be imported. I am looking for something similar in python.

有什么想法吗?你知道吗


Tags: inpyimportmostinitpytestasls
2条回答

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

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

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

Python不搜索当前目录(.)。但是它会搜索包含输入脚本的目录(./b)。见The Module Search Path。你知道吗

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

PYTHONPATH=. python b/y.py 

或使用^{} option

python -m b.y

相关问题 更多 >

    热门问题