python - 找不到模块(__init__.py 存在),我正在完全复制教程
问题描述
我看到与此相关的其他问题,但从我所看到的情况来看,没有一个答案适用于此。
我有一个看起来像这样的应用程序:
.
├── ds
│ ├── __init__.py
│ └── stack.py
└── tests
└── test_stack.py
test_stack.py
有一个导入行:from ds.stack import Stack
并且stack.py
只是创建并传递一个名为Stack
.
当在顶级目录(从中tree
运行)时,我运行python3 tests/test_stack.py
,得到错误:ModuleNotFoundError: No module named 'ds'
我已经在 Discord 中与某人进行了检查,并且它在他们的机器上运行......显然是运行教程的人。
有一次,我确实将这个目录放在了我的目录中PYTHONPATH
,这似乎避免了错误,但是当我只是在做这样的随机小事情时,我不想这样做......并且根据教程和与我商量的人,我不应该这样做。
想法?
解决方案
尝试这个:
在您的测试目录中添加 _ init _.py 文件
使(ds 和测试的)父目录成为当前工作目录并运行
python -m tests.test_stack
现在,正如@Klaus D. 所建议的那样,要正确运行您的测试,您需要安装 pytest 之类的东西,然后运行pytest ./tests
推荐阅读
- web-services - 从连接到 Azure 应用程序网关的浏览器访问 WSDL 文件时,Azure VM 的私有 IP 地址作为 WSDL 文件中的地址返回
- c# - c# 应用程序范围的处理程序(对于“任何东西”)?// 类似 Java 的“拦截器”?
- java - 负载均衡器无法正确均衡负载
- r - 使用 convert.circular 函数对圆形分布进行缩放和居中
- tfs - 自定义 TFS 发布任务获得什么样的安全上下文?
- php - 离子和 apache2 不兼容
- cordova - 拒绝显示框架,因为它将“X-Frame-Options”设置为“sameorigin”
- python - 是否有带有字典的“堆栈和地图”类似物?
- python - Tensorflow 和 TFlearn 错误 - 意外参数“keepdims”
- php - 如果项目在 CakePHP 3 中,我可以在 Laravel 框架中创建 Web 服务吗