V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
chenzw2
V2EX  ›  Python

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

  •  
  •   chenzw2 · 192 天前 · 1231 次点击
    这是一个创建于 192 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目结构如下:

    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 是否还需要额外的配置,同目录下的模块无法引入...

    9 条回复    2024-06-12 18:54:45 +08:00
    darcyC
        1
    darcyC  
       192 天前
    不是的哦。你需要把 init.py 这个文件名改成 animal.py 哦。不太确定是不是你不小心打错了(试问何来的 animal ?)
    你可以试着把 from animal import Animal 改成 from init import Animal 哦。
    skyrim61
        2
    skyrim61  
       192 天前
    from init import Animal
    darcyC
        3
    darcyC  
       192 天前
    比方说你看,你 test.py 里写了 from animal import Animal 。

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

    然后你接下去用的时候就可以写 a = Animal() 等等了(注意不要用同一个名字哦)
    nixgnauhcuy
        4
    nixgnauhcuy  
       192 天前
    用法错了,按你的项目结构,应该是
    ``` python
    from init import Animal
    ```
    cherbium
        5
    cherbium  
       192 天前
    按照你的想法,你应该要从 init 里面导入吧
    chenzw2
        6
    chenzw2  
    OP
       192 天前
    sorry ,图片没放进去,项目结构如下所示
    superrichman
        7
    superrichman  
       192 天前
    这样
    from .animal import Animal
    Sawyerhou
        8
    Sawyerhou  
       192 天前
    test.py 拿到 animal 文件夹外,放到 basic 文件夹下

    或(不推荐)
    from __init__ import Animal
    blackshadow
        9
    blackshadow  
       192 天前
    为啥代码要写在__init__.py 里? 这文件不是做包内文件访问权限用的吗? 正常是这个文件是空文件,然后你的 Animal 类 animal.py
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1538 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.