gpt4 book ai didi

python - 如何导入相互导入的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:48 25 4
gpt4 key购买 nike

如何导入相互导入的函数和字典。这两个文件已经在同一个目录中,因此没有导入 sys 的 nid。另外,我认为它是递归的,这就是它无法导入的原因。我如何从彼此的文件导入字典而不使其递归并导致错误?

我确实去过这个网站here但它没有回答我的问题,也没有提供任何示例代码来指导我,因此,我用测试代码创建了这个问题来解释我的问题。

假设我有这两个文件:boxA 和 boxR,每个文件都有一个字典 keyA 和 keyR 以及名为 generatekeyA 和 generatekeyR 的函数

在盒子A中:

import json 
from tinydb import TinyDB, Query
from boxR import keyR

def generatekeyA():

keyA = {}

serialnoA = 'Serial_noA'
secretidA = 'Secret_idA'

count = 0
while (count <5):

serial = generate key
id = generate id


keyA[serialnoA].append(serial)
keyA[secretidA].append(id)


with open("/home/pi/Desktop/json/output.json", 'w+'):
db = TinyDB('/home/pi/Desktop/json/output1.json')
table = db.table('A KEYS')
db.insert_multiple([{'Serial number A' : keyA[serialnoA]}])
db.insert_multiple([{'Secret id A' : keyA[secretidA]}])
db.insert_multiple([{'Secret id R' : keyR[secretidR]}])

generatekeyA()

在盒子里:

import json 
from tinydb import TinyDB, Query
from boxA import keyA

def generatekeyR():

keyR = {}

serialnoR = 'Serial_noR'
secretidR = 'Secret_idR'

count = 0
while (count <5):

serialR = generate key
idR = generate id


keyR[serialnoR].append(serialR)
keyR[secretidR].append(idR)


with open("/home/pi/Desktop/json/output2.json", 'w+'):
db = TinyDB('/home/pi/Desktop/json/output2.json')
table = db.table('R KEYS')
db.insert_multiple([{'Serial number R' : keyR[serialnoR]}])
db.insert_multiple([{'Secret id R' : keyR[secretidR]}])
db.insert_multiple([{'Secret id A' : keyA[secretidA]}])


generatekeyA()

让我解释一下上面的代码。我有 2 个文件为我生成 key ,之后我必须将输出导出到一个 json 文件中。 output.json 文件打印出 keyA 自己的序列号和 secret id,并且只打印出 keyR 的 secretid,反之亦然到 output2.json 文件中。但问题是,尽管我研究了递归输出,但我仍然不明白如何修复它,因为它没有提供任何示例代码作为指导。解决这个问题的最佳方法是什么,这样我就不必对文件进行太多更改?

错误告诉我这可能是一个递归错误:

Traceback (most recent call last):
File "/home/pi/Desktop/boxA.py", line 7, in <module>
from boxR import keyR
File "/home/pi/Desktop/boxR.py", line 11, in <module>
from boxA import keyA
File "/home/pi/Desktop/boxA.py", line 7, in <module>
from boxR import keyR
ImportError: cannot import name 'keyA'

最佳答案

这是一个循环依赖。我不确定如何在不改变模块的基本结构和依赖关系图的情况下解决它。为什么不尝试在单独的文件中定义这两个字典并导入它们。从您的代码来看,它们无论如何都是空的。

您可能会发现 this文章很有趣。本质上,当您进行递归依赖时,导入的模块在执行 import 语句时发现彼此为空模块。因此出现此错误

关于python - 如何导入相互导入的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com