我具有以下文件结构:
command.py
simulations
basis
basis.py
hamiltonian
hamiltonian.py
其中没有扩展名的名称是文件夹。
command.py
正在导入basis.py
和hamiltonian.py
,例如:from base.basis导入基础
从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)仅当 os.chdir('..')
独立运行时,我才能以某种方式运行hamiltonian.py
吗?像if name == 'main'
一样?
2)是否有更优雅的解决方案?
答案 0 :(得分:1)
1)可以,但这不是一个好主意。最好避免使用os.chdir
。
2)您需要os.chdir
的事实表明您正在尝试像以下方式在本地运行它:
python ./simulations/hamiltonian/hamiltonian.py
在这种情况下,请使用:
PYTHONPATH=. python ./simulations/hamiltonian/hamiltonian.py
如果您正确地 install python软件包并且您的软件包具有@ E.Serra建议的正确的__init__.py
文件,您就不会遇到此问题。