如何拥有多目录或多包python项目?

时间:2017-09-14 09:45:33

标签: python packages

我有这样的项目结构:

package1/__init__.py
package1/file1.py
package1/file2.py

package2/__init__.py
package2/file1.py
package2/file2.py

__init__.py
script1.py
script2.py

不幸的是,我发现我只能从根目录运行代码,例如,从script1.py运行代码。如果我从pakage2/file2.py运行说,文件之间的所有链接都会丢失,即package1package2的所有导入都找不到。

Python中正确的目录结构是什么,它限制了所有目录的包结构?

1 个答案:

答案 0 :(得分:0)

您需要package1package2都在一个包中,在这种情况下,它们都可以互相导入:

root_package/
    __init__.py
    package1/
    package2/

或者将软件包添加到PYTHONPATH,在这种情况下,系统上的任何python脚本都可以从中导入:

export PYTHONPATH="$PYTHONPATH:/path/to/package1:/path/to/package2"

更新:如果直接运行脚本,则无法作为程序包的一部分导入。你应该做的是根据需要在包中定义类和函数,然后从另一个脚本中导入它们:

root_package/
    __init__.py
    my_script.py
    package1/
    package2/

script.py

from package1 import ...
from package2 import ...