maxliu06 发表于 2022-3-11 17:12:04

导包的问题, 一直没有弄明白。。求解

目录结构如图。

        Config 文件夹 中 有        3个py文件,   其中有两个类   Conn, MysqlCon   写在了 sqlData.py 中   
                                       然后在 在 __inin__.py 中也写了一句   from .sqlData import Conn, MysqlCon



        22.py 与 Config 文件夹 在同级目录,现在想在 22.py 目录中引入 这两个类。 这个要怎么写。。。 ~!!

isdkz 发表于 2022-3-11 17:31:56

你可以这么写:
from Config.sqlData import Conn, MysqlCon

from Config import Conn, MysqlCon

关于你那个报错是跟相对导入有关,相对导入的内容你可以看一下这个帖子:
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=209065&pid=5737252

maxliu06 发表于 2022-3-11 18:09:25

本帖最后由 maxliu06 于 2022-3-11 18:19 编辑

isdkz 发表于 2022-3-11 17:31
你可以这么写:




如果 22.py   写成 from Config.sqlData import Conn, MysqlCon

那么 其他py文件的 引入模块方式 全都要写成了 绝对路径了。。。~! 

我的目录结构是这样的,

最外目录cxToERP   ,里面有Config 目录及及22.py   【22.py 为主程序 】
                                          
                                          Config 目录 中又有 三个 py文件, 一个xml 文件,其中 config.py 中 需要入引xml 文件 ;       sqlData中 需要引入config.py 中的类

        而主程序 又需要引入 sqlData.py 中的类;   

如果用相对路径引入 , 引入方式应该怎么写。。。~


刚看了那个链接 ,有点理解不了。。

如果cxToERP是顶包,
 那么    sqlData.py 需要引入 config.py 中的类, 是不是要写成from ..Config.config import A , B   【尝试过 还是会报错的】


我整个项目文件的模块应该怎么引入,求教。。~!!!
  

isdkz 发表于 2022-3-11 18:17:23

maxliu06 发表于 2022-3-11 18:09
如果 22.py   写成 from Config.sqlData import Conn, MysqlCon

那么 其他py文件的 引入模块方式 全 ...

这跟其它的py文件有什么关系?

难道你的 22.py 要作为模块被其它的文件引入?作为模块被引入的py文件才会用相对导入。

但是这不可能的,能作为模块被引入的得满足标识符命名规则,你的 22.py 很明显不符合

maxliu06 发表于 2022-3-11 18:21:49

isdkz 发表于 2022-3-11 18:17
这跟其它的py文件有什么关系?

难道你的 22.py 要作为模块被其它的文件引入?作为模块被引入的py文件 ...

22.py作主程序 运行,是想引入 其他模块。。

isdkz 发表于 2022-3-11 18:28:04

maxliu06 发表于 2022-3-11 18:09
如果 22.py   写成 from Config.sqlData import Conn, MysqlCon

那么 其他py文件的 引入模块方式...

sqlData.py 跟 config.py 是同级的,直接 from .config import xxx 就可以了

maxliu06 发表于 2022-3-11 18:29:11

本帖最后由 maxliu06 于 2022-3-11 18:38 编辑

isdkz 发表于 2022-3-11 18:17
这跟其它的py文件有什么关系?

难道你的 22.py 要作为模块被其它的文件引入?作为模块被引入的py文件 ...

重新改了一下, 它居然会运行了, 再不太理解。。。

22.py   改成 from Config import Conn, MysqlCon

sqlData.py改成了 from .config import DBConfig
confing.py读取xml 的路径改了./Config/Config.xml
init.py   引入 改成了from .sqlData import Conn, MysqlCon



它居然 可以运行了。。。 {:5_109:}
但还是不太解理你所说的顶包问题。、。。。



但它还是存在一个问题,      我 sqlData.py 单独运行时又报错了,报的又是 什么父包引入的问题。。。

isdkz 发表于 2022-3-11 18:32:57

maxliu06 发表于 2022-3-11 18:29
重新改了一下, 它居然会运行了, 再不太理解。。。

22.py   改成 from Config import Conn, MysqlCon ...

顶包和父包是根据最终导入模块的那个py文件的绝对导入路径来看的,

比如你这里使用模块的是 22.py,22.py 只能使用绝对导入,不能使用相对导入
页: [1]
查看完整版本: 导包的问题, 一直没有弄明白。。求解