【发布时间】:2018-08-22 19:38:27
【问题描述】:
我的文件结构如下:
command.py
simulations
basis
basis.py
hamiltonian
hamiltonian.py
其中不带扩展名的名称是文件夹。
-
command.py正在导入basis.py和hamiltonian.py喜欢:
从基础.basis 导入基础
从 hamiltonian.hamiltonian 导入 Hamiltonian
其中Basis 和Hamiltonian 是两个类。
我可以运行command.py 很好,所有导入都可以。
现在,我想单独使用
hamiltonian.py,但它需要导入basis.py。为了使
command.py正常工作,hamiltonian.py中的导入必须是from basis.basis import Basis-
为了让 hamiltonian.py 自己运行,导入需要是
os.chdir('..')from basis.basis import Basis
但是这使得command.py不再起作用了。
--
1) 只有在 hamiltonian.py 独立运行时,我才能以某种方式运行 os.chdir('..') 吗?喜欢if <strong>name</strong> == 'main'?
2) 有没有更优雅的解决方案?
【问题讨论】:
-
你需要 __init__.py 文件在那些将充当模块的目录中(我想是模拟) 然后在命令中你有.from simulations.whatever.whatever 导入任何东西 在hamiltonians from simulations.whatever.whatever导入任何东西
-
是的,我有一个 init。问题是命令也使用了hamiltonian
-
从外观上看...这看起来像是一个糟糕的类设计!
-
@NoobEditor 那么请告诉我更好的方法是什么? basic.py 和 hamiltonian.py 正在生成我保存在同一个文件夹中的 npy 数组和 pdf。这就是为什么我想把它们放在单独的文件夹中。那么对于这种文件夹结构,您认为哪种类设计更好?
-
Google 一些关于 repo 结构和初始化文件包和模块的信息。不想失礼,但几个月后你会感谢我的。