相互依赖的导入程序存在问题

时间:2018-08-31 00:23:00

标签: python import

我的程序需要使用哈希表和sql数据库;目前,我想将程序的哈希表部分(添加,获取,删除等)和程序的数据库部分(相同)放入单独的python文件中,以便我可以更轻松地查找和编辑代码的特定部分,哈希部分依靠我的数据库部分,因为它们一起工作。但是我的pycharm建议(当我分别导入两个python文件时)将不使用第二个数据库程序。 例如

mainProgram

import hashProgam
import databaseProgram
main()
  do blah blah blah blah
  call function foo_bar()
run main()

hashProgram

foo_bar()
  do blah blah
  call function boo_lah()

databaseProgram

boo_lah()
  do blah blah

当我的hashProgram想要调用数据库程序时会发生问题(我假设),尽管我不知道为什么会这样,因为我已经将它们都导入了?

对不起,如果这没有道理,但我真的不知道该怎么说,谢谢您的帮助:-)

1 个答案:

答案 0 :(得分:0)

  

...有关如何将程序拆分为更易于管理的较小python文件的提示

这是一项相当基本的技术,只需简单阅读一下official documentation中的教程即可。

  

...在执行主程序时,(未导入所有我的辅助程序)hashKey未定义

类似这样的设置应该可以工作:

foo.py

hash_key = 1

main.py

import foo
assert foo.hash_key == 1 
print(foo.hash_key) 
  

...我的哈希部分依赖于我的数据库部分,因为它们一起工作。

在极少数情况下,模块相互导入时,您可能会得到circular reference and need a smarter split of modules。我不确定是否是您的情况,也许您只是还没有使用正确的导入语法。