gpt4 book ai didi

python - 无法从不同目录导入 python 模块

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:57 25 4
gpt4 key购买 nike

我在 python3 中有这个代码结构:

- datalake
__init__.py
utils
__init__.py
utils.py
lambdas
__init__.py
my-lambdas.py
- tests
__init__.py
demo.py

所有 init__.py 文件都是空的。

我的问题是如何从 tests/demo.py 导入 datalake 模块?我在 demo.py 中尝试了 from datalake.utils import utils 但是当我从命令行运行 python tests/demo.py 时,我得到了这个错误 ModuleNotFoundError:没有名为“datalake”的模块

如果我使用这段代码:

from ..datalake.utils import utils

我会收到错误 ValueError: attempted relative import beyond top-level package

我还尝试从 my-lambda.py 文件导入模块 utils,但也失败了。 my-lambda.py 中的代码是 from datalake.utils import utils 但我在运行时收到 ModuleNotFoundError: No module named 'datalake' 错误python datalake/lambda/my-lambda.py 来自命令行。

如何导入模块?

最佳答案

当您运行类似 python tests/demo.py 的命令时,您所在的文件夹不会添加到 PYTHONPATH,脚本文件夹会添加。因此,像 import datalake 这样的顶级导入将失败。为了解决这个问题,您可以将测试作为一个模块运行:

python 2:

python -m tests/demo

python 3:

python -m tests.demo

demo.py 中的任何 datalake 导入都将起作用。

听起来您真正想要做的是拥有一个文件夹,其中包含独立于您的主应用程序的测试并运行它们。为此,我推荐 py.test ,对于您的情况,您可以阅读 Tests Outside Application Code如何去做。 TL;DR 使用 python -m py.test 从您的顶级项目文件夹运行您的测试,它会工作。

关于python - 无法从不同目录导入 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57211982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com