【发布时间】:2021-04-21 15:42:08
【问题描述】:
我花了几个小时研究这个问题,但我仍然感到困惑。请发现我的无知很迷人。
我正在构建一个 python 程序,它可以让我在战舰游戏中让两个 AI 相互对抗。
这是我的目录结构:
.
├── ais_play_battleship
│ ├── game.py
│ ├── __init__.py
│ ├── player.py
│ └── ship.py
├── LICENSE
├── README.md
└── tests
└── ship_test.py
2 directories, 7 files
目前,我正在尝试编写ship_test.py,但我似乎无法导入ais_play_battleship.ship。我得到了可怕的“ModuleNotFoundError”
以下是我的研究告诉我的问题:
- 如果您想从另一个目录导入 python 代码,您应该将该目录设为包而不是模块。因此,我在
ais_play_battleship的根目录下放置了一个__init__.py文件。 - Python 只会搜索启动 python 的目录以及您正在运行的脚本的目录。因此,我一直在尝试通过从根目录运行
python3 tests/ship_tests.py来启动我的测试。
这是我的具体问题:
- 为什么错误是“ModuleNotFound”错误?不应该是“PackageNotFound”吗?
- 将 ais_play_battleship 制作成一个包是否正确?
- 如何将我的测试保存在单独的目录中,并且仍然使用 ais_play_battleship 中的代码?
请原谅我,因为我不太擅长在 StackOverflow 上提问。请告诉我如何改进。
【问题讨论】:
-
我怀疑您忽略了将
path设置为包含ais_play_battleship。 -
您是否建议我执行以下操作?
import syssys.path.insert(0, '/path/to/application/app/folder')另外,我认为如果我从父目录运行程序,我不需要。这是错的吗?
标签: python import module package