Python-导入和文件夹结构

时间:2018-08-21 14:47:58

标签: python import

我具有以下文件结构:

command.py
simulations
  basis
    basis.py
  hamiltonian
    hamiltonian.py

其中没有扩展名的名称是文件夹。

  • command.py正在导入basis.pyhamiltonian.py,例如:
  

from base.basis导入基础

     

从hamiltonian.hamiltonian导入哈密尔顿

其中BasisHamiltonian是两个类。

我可以正常运行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)是否有更优雅的解决方案?

1 个答案:

答案 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文件,您就不会遇到此问题。