【问题标题】:The module does not know its known package in Python该模块不知道它在 Python 中的已知包
【发布时间】:2019-03-31 19:24:20
【问题描述】:

我在导入自己的模块时遇到了一些小问题。
我的项目结构如下。

src/  
|-- utils/  
|----- __init__.py  
|----- foo_a.py  
|----- foo_b.py  
|-- main.py  

ma​​in.py

from utils import foo_b

foo_a.py

def func_a():
    print ("Hello World")

foo_b.py

from foo_a import func_a
    func_a()

如果我运行python foo_b.py,它会起作用。
但是当我运行python main.py 时,它会显示如下错误:
"ModuleNotFoundError: No module named 'foo_a'"

我可以通过以下方式解决这个问题: export PYTHONPATH = path_of_utils_folder

但这很烦人。 所以我想知道我构建项目的方式是否不正确还是因为我导入模块的方式?

谢谢。

【问题讨论】:

  • 尝试 from .utils import foo_b 作为相对导入
  • @coldspeed,这仍然会产生错误。但我在foo_b.py 中试过这个。 from . import foo_a 并且有效。所以,是的,问题解决了。谢谢
  • 我认为问题出在main.py,不过?
  • @coldspeed 哦等等。虚惊。有了新的更改,它在我运行 python main.py 时有效,但在 python foo_b.py 时无效。

标签: python module package


【解决方案1】:

foo_a.py 不是实例,因此您不能用作模块,您可以使用 from utils import ...

这是错误的用法>>> from foo_a import

如果你想使用 from foo_a

你需要 foo_a 中的一些东西,例如:

在 foo_a 中;

def plus(a,b):
    return(a+b)

现在,您可以使用 from foo_a import plus 但是你不能使用 from foo_a import plussss

因为 plusss 不在 foo_a 中

for use plusss should in foo_a

【讨论】:

  • 感谢您的回答。但是在我的foo_a.py 文件中,有一个函数名为func_a()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2019-06-15
相关资源
最近更新 更多