鱼C论坛

 找回密码
 立即注册
查看: 1250|回复: 7

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

[复制链接]
发表于 2022-3-11 17:12:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录结构如图。

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



        22.py 与 Config 文件夹 在同级目录,  现在想在 22.py 目录中引入 这两个类。 这个要怎么写。。。 ~!!
最佳答案
2022-3-11 17:31:56
你可以这么写:
  1. from Config.sqlData import Conn, MysqlCon
复制代码


  1. from Config import Conn, MysqlCon
复制代码


关于你那个报错是跟相对导入有关,相对导入的内容你可以看一下这个帖子:
https://fishc.com.cn/forum.php?m ... 065&pid=5737252
21.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 17:31:56 | 显示全部楼层    本楼为最佳答案   
你可以这么写:
  1. from Config.sqlData import Conn, MysqlCon
复制代码


  1. from Config import Conn, MysqlCon
复制代码


关于你那个报错是跟相对导入有关,相对导入的内容你可以看一下这个帖子:
https://fishc.com.cn/forum.php?m ... 065&pid=5737252
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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     【尝试过 还是会报错的】


我整个项目文件的模块应该怎么引入,求教。。~!!!
  
222.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 很明显不符合
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-11 18:21:49 | 显示全部楼层
isdkz 发表于 2022-3-11 18:17
这跟其它的py文件有什么关系?

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

22.py  作主程序 运行,  是想引入 其他模块。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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



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



但它还是存在一个问题,        我 sqlData.py 单独运行时又报错了,  报的又是 什么父包引入的问题。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-11 18:32:57 | 显示全部楼层
maxliu06 发表于 2022-3-11 18:29
重新改了一下, 它居然会运行了, 再不太理解。。。

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


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

比如你这里使用模块的是 22.py,22.py 只能使用绝对导入,不能使用相对导入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表