推荐学习书目
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 · Jun 12, 2024 · 3835 views
    This topic created in 764 days ago, the information mentioned may be changed or developed.

    项目结构如下:

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

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

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

    或(不推荐)
    from __init__ import Animal
    wombat
        9
    wombat  
       Jun 12, 2024
    为啥代码要写在__init__.py 里? 这文件不是做包内文件访问权限用的吗? 正常是这个文件是空文件,然后你的 Animal 类 animal.py
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3362 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 12:28 · PVG 20:28 · LAX 05:28 · JFK 08:28
    ♥ Do have faith in what you're doing.