2017-09-14 67 views
-1

我有项目结构是这样的:如何拥有多目录或多包python项目?

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运行说,文件之间的所有链接都会丢失,即找不到从package2导入的所有package1

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

回答

0

您也需要双方package1package2是一个封装内,在这种情况下,他们可以从彼此俱进:

root_package/ 
    __init__.py 
    package1/ 
    package2/ 

将软件包添加到您的PYTHONPATH,在这种情况下,任何Python脚本上您的系统可以把它们导入:

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

更新:如果直接运行脚本,你不能导入作为一个包的一部分。你应该做的就是定义类和函数根据需要在你的包,然后从另一个脚本导入:

script.py

from package1 import ... 
from package2 import ... 
+0

对不起,我当然'__init __ py'文件根目录也是如此,我修复了这个问题 – Dims

+0

无论如何,它并没有帮助 – Dims

+0

“另一个脚本”你的意思是“脚本在根目录但不在任何子目录中”? – Dims