Python import 问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zxCoder
V2EX    问与答

Python import 问题

  •  
  •   zxCoder 2021-06-07 14:47:22 +08:00 1351 次点击
    这是一个创建于 1592 天前的主题,其中的信息可能已经有所发展或是发生改变。

    a.py

    def funA(): pass 

    b.py

    from a import funA def funB(): funA() 

    main.py

    from dir.subdir.b import funB funB() 

    出错的地方是 b.py 的 import,如果改成 from .a import funA 就没错,但是 IDE 又提示我应该改称 from a import funA,但是如果改了就报错,ImportError: cannot import name xxx from xxx

    7 条回复    2021-06-08 16:52:23 +08:00
    yunyuyuan
        1
    yunyuyuan  
       2021-06-07 16:30:13 +08:00
    我测试没报错。

    而且 from dir.subdir.b import funB 可以改成 from .subdir.b import funB 。
    Dockerfile
        2
    Dockerfile  
       2021-06-07 16:52:03 +08:00
    from a import funA 是对的
    pyMoRan
        3
    pyMoRan  
       2021-06-07 16:54:38 +08:00
    在 subdir 建个__init__.py 文件
    renmu123
        4
    renmu123  
       2021-06-07 16:55:41 +08:00 via Android
    相对导入和绝对导入,你好像忘记添加__init__了
    Dockerfile
        5
    Dockerfile  
       2021-06-07 17:01:37 +08:00
    添加__init__.py
    b.py :
    from subdir.a import func_a
    main.py:
    from subdir.b import func_b
    rationa1cuzz
        6
    rationa1cuzz &bsp;
       2021-06-07 17:46:25 +08:00
    1 、解释器可以右键文件 mark directory as sources root
    2 、大部分 import 异常可以从两个方向看一个是工作路径
    import os
    print os.getcwd()
    另一个是__init__.py 的问题
    NickLuan
        7
    NickLuan  
       2021-06-08 16:52:23 +08:00
    你说的没太看懂,测试了下你发的代码,报错如下:

    Traceback (most recent call last):
    File "dir/main.py", line 1, in <module>
    from dir.subdir.b import funB
    ModuleNotFoundError: No module named 'dir'

    这么说吧,文件导入就是告诉系统从哪里找这个文件,Python 中被执行文件也叫入口文件,你执行 main.py ,那这个文件就是入口文件,Python 会自动把这个文件所在文件夹的路径添加都文件搜索路径中,可以打印 sys.path 看一看
    那么 from dir.subdir.b import funB 就等同于从 dir 里找名字为 dir 的文件或文件夹,所以就报错 No module named 'dir'
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2363 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:55 PVG 23:55 LAX 08:55 JFK 11:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86