用 idea 运行 Python 失败,同级目录下的模块无法导入?

2024-06-12 17:43:36 +08:00
 chenzw2

项目结构如下:

test.py 内容:

from animal import Animal

if __name__ == "__main__":
    animal = Animal("小黑")
    animal.eat("骨头")

init.py 内容:

class Animal:

    # 构造方法
    def __init__(self, name):
        self.name = name

    def eat(self, food):
        self.food = food

运行 test.py 报错:

Traceback (most recent call last):
  File "C:\Users\xxx\IdeaProjects\python-samples\test.py", line 1, in <module>
    from animal import Animal
ModuleNotFoundError: No module named 'animal'

使用 IDEA 运行 python 是否还需要额外的配置,同目录下的模块无法引入...

1578 次点击
所在节点    Python
9 条回复
darcyC
2024-06-12 17:49:06 +08:00
不是的哦。你需要把 init.py 这个文件名改成 animal.py 哦。不太确定是不是你不小心打错了(试问何来的 animal ?)
你可以试着把 from animal import Animal 改成 from init import Animal 哦。
skyrim61
2024-06-12 17:49:29 +08:00
from init import Animal
darcyC
2024-06-12 17:50:28 +08:00
比方说你看,你 test.py 里写了 from animal import Animal 。

这个意思是从模块 animal.py 里导入 Animal 。

然后你接下去用的时候就可以写 a = Animal() 等等了(注意不要用同一个名字哦)
nixgnauhcuy
2024-06-12 17:52:02 +08:00
用法错了,按你的项目结构,应该是
``` python
from init import Animal
```
cherbium
2024-06-12 17:52:33 +08:00
按照你的想法,你应该要从 init 里面导入吧
chenzw2
2024-06-12 18:00:15 +08:00
sorry ,图片没放进去,项目结构如下所示
superrichman
2024-06-12 18:00:51 +08:00
这样
from .animal import Animal
Sawyerhou
2024-06-12 18:17:47 +08:00
test.py 拿到 animal 文件夹外,放到 basic 文件夹下

或(不推荐)
from __init__ import Animal
blackshadow
2024-06-12 18:54:45 +08:00
为啥代码要写在__init__.py 里? 这文件不是做包内文件访问权限用的吗? 正常是这个文件是空文件,然后你的 Animal 类 animal.py

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1048994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX