导包的问题, 一直没有弄明白。。求解
目录结构如图。Config 文件夹 中 有 3个py文件, 其中有两个类 Conn, MysqlCon 写在了 sqlData.py 中
然后在 在 __inin__.py 中也写了一句 from .sqlData import Conn, MysqlCon
22.py 与 Config 文件夹 在同级目录,现在想在 22.py 目录中引入 这两个类。 这个要怎么写。。。 ~!! 你可以这么写:
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: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 【尝试过 还是会报错的】
我整个项目文件的模块应该怎么引入,求教。。~!!!
maxliu06 发表于 2022-3-11 18:09
如果 22.py 写成 from Config.sqlData import Conn, MysqlCon
那么 其他py文件的 引入模块方式 全 ...
这跟其它的py文件有什么关系?
难道你的 22.py 要作为模块被其它的文件引入?作为模块被引入的py文件才会用相对导入。
但是这不可能的,能作为模块被引入的得满足标识符命名规则,你的 22.py 很明显不符合 isdkz 发表于 2022-3-11 18:17
这跟其它的py文件有什么关系?
难道你的 22.py 要作为模块被其它的文件引入?作为模块被引入的py文件 ...
22.py作主程序 运行,是想引入 其他模块。。 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: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 单独运行时又报错了,报的又是 什么父包引入的问题。。。 maxliu06 发表于 2022-3-11 18:29
重新改了一下, 它居然会运行了, 再不太理解。。。
22.py 改成 from Config import Conn, MysqlCon ...
顶包和父包是根据最终导入模块的那个py文件的绝对导入路径来看的,
比如你这里使用模块的是 22.py,22.py 只能使用绝对导入,不能使用相对导入
页:
[1]