__init__.py 的简单案例和导入给出未找到的神秘模块

Simple case of __init__.py and import giving mysterious module not found

我从很多不同的角度尝试过这个,但无法解决。一定是这么简单的案例。在 Python 3.7.6:

目录结构:

./modtest/
./modtest/__init__.py
./modtest/test1.py
./modtest/test2.py

test1.py:

import modtest
def x(i):
   print(i)
   y(i)    

test2.py:

def y(i):
   print(i)

__init__.py 是一个空文件。

当我尝试 运行 代码时:

$ /Users/pitosalas/miniconda3/bin/python /Users/pitosalas/mydev/rsb_py/modtest/test1.py
Traceback (most recent call last):
  File "/Users/pitosalas/mydev/rsb_py/modtest/test1.py", line 1, in <module>
    import modtest
ModuleNotFoundError: No module named 'modtest

根据我的阅读,这应该有效。我确定有一些微不足道的错误!

您正在 test1.py 中导入 modtest,而此模块本身位于 modtest 中。这不可能是因为 modest 尚未定义并添加到搜索路径。所以这就是你实际上应该拥有的:

./modtest/
./modtest/__init__.py
./modtest/
./modtest/test2.py
./test1.py  # this module must be outside of modtest