鱼C论坛

 找回密码
 立即注册
查看: 2673|回复: 17

[已解决]Python 自定义模块跨文件引用

[复制链接]
发表于 2023-8-26 21:59:43 | 显示全部楼层 |阅读模式

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

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

x
请问为什么这样写会报错呢?
最佳答案
2023-8-26 22:31:12
simulator.py第一行改成
from .interface import QuantumDevice, Qubit
屏幕截图 2023-08-26 215916.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-26 22:00:00 | 显示全部楼层
在Python中,自定义模块之间的跨文件引用需要注意一些规则,否则可能会导致报错。以下是一些常见的导致错误的原因和解决方法:

1. 循环导入:如果两个或多个模块相互导入,形成循环依赖关系,会导致报错。例如,模块A导入了模块B,同时模块B也导入了模块A。

   解决方法:确保模块之间没有循环导入,可以通过重新组织代码结构来避免这种情况发生。

2. 模块未在同一目录或路径下:如果要引用一个模块,但该模块文件不在当前目录或Python解释器的搜索路径中,会导致找不到模块。

   解决方法:确保要引用的模块文件与当前文件在同一目录或添加模块所在目录到Python解释器的搜索路径中。可以使用sys模块中的sys.path.append()来添加搜索路径。

3. 命名冲突:如果不同的模块中定义了相同的名称,例如函数名或变量名,会导致命名冲突。

   解决方法:在引用模块的地方使用完整的模块名来区分不同的定义,或者使用别名(import module as alias)来避免冲突。

4. 语法错误或其他错误:在模块中存在语法错误或其他错误,会导致无法成功引用模块。

   解决方法:检查模块文件中的语法和其他代码错误,并进行修复。

请提供具体的报错信息和相关代码,以便我能够更好地帮助你解决问题。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 22:13:02 | 显示全部楼层
我这样写,程序就不会报错,只是提示有问题
屏幕截图 2023-08-26 221201.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 22:16:31 | 显示全部楼层
陶远航 发表于 2023-8-26 22:00
在Python中,自定义模块之间的跨文件引用需要注意一些规则,否则可能会导致报错。以下是一些常见的导致错误 ...

这些问题我都注意到了,我按照后面回复的图片里那种写法,程序就没有出问题,感觉这两种写法没啥区别呀?我也加了__init__.py文件了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 22:31:12 | 显示全部楼层    本楼为最佳答案   
simulator.py第一行改成
from .interface import QuantumDevice, Qubit
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 22:45:12 | 显示全部楼层
isdkz 发表于 2023-8-26 22:31
simulator.py第一行改成

不太行
  File "e:\Python_Project\Qpanda_Test\quantum\ch03\qkd.py", line 5, in <module>
    from .interface import QuantumDevice, Qubit
ImportError: attempted relative import with no known parent package
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 22:49:09 | 显示全部楼层
Andrew@ 发表于 2023-8-26 22:45
不太行
  File "e:\Python_Project\Qpanda_Test\quantum\ch03\qkd.py", line 5, in
    from .interfa ...

我是让你改 simulator.py,不是让你改 qkd.py
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 22:53:19 | 显示全部楼层
isdkz 发表于 2023-8-26 22:49
我是让你改 simulator.py,不是让你改 qkd.py

也不行,我再想想其他办法吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 22:54:19 | 显示全部楼层
Andrew@ 发表于 2023-8-26 22:53
也不行,我再想想其他办法吧

你是不是没有把qkd.py改回来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 22:55:58 | 显示全部楼层
第四行路径改成 ../../quantom/ch02
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 22:56:31 | 显示全部楼层
我给你个例子吧,执行我这个的qkd.py是不会有问题的:
test.rar (1.42 KB, 下载次数: 1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 23:35:22 | 显示全部楼层
isdkz 发表于 2023-8-26 22:56
我给你个例子吧,执行我这个的qkd.py是不会有问题的:

好的好的,谢谢,我再试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 23:38:24 | 显示全部楼层
isdkz 发表于 2023-8-26 22:31
simulator.py第一行改成

请问这是什么原理呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-26 23:42:55 | 显示全部楼层
Andrew@ 发表于 2023-8-26 23:38
请问这是什么原理呀?

去了解一下python的绝对导入和相对导入,这个一两句话讲不清楚,没接触过可能还会有点不好理解,多用就懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-26 23:57:48 | 显示全部楼层
isdkz 发表于 2023-8-26 23:42
去了解一下python的绝对导入和相对导入,这个一两句话讲不清楚,没接触过可能还会有点不好理解,多用就懂 ...

好的好的,多谢多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-27 13:58:38 | 显示全部楼层
isdkz 发表于 2023-8-26 23:42
去了解一下python的绝对导入和相对导入,这个一两句话讲不清楚,没接触过可能还会有点不好理解,多用就懂 ...

大佬,我查了一下,发现看的云里雾里的,请问可以推荐一个详细教程吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-27 15:50:17 | 显示全部楼层
Andrew@ 发表于 2023-8-27 13:58
大佬,我查了一下,发现看的云里雾里的,请问可以推荐一个详细教程吗?

我不知道有什么比较详细的教程,我当时看的是这个文章:https://iswbm.com/407.html

这个相对导入确实一开始不太好理解,慢慢就懂了

你也可以看一下之前关于相对导入的求助贴:https://fishc.com.cn/search.php? ... 0%B6%D4%B5%BC%C8%EB
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-27 17:02:44 | 显示全部楼层
isdkz 发表于 2023-8-27 15:50
我不知道有什么比较详细的教程,我当时看的是这个文章:https://iswbm.com/407.html

这个相对导入确实 ...

好的,多谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 20:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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