我正在尝试以一种可以使用绝对导入的方式来组织脚本,而不附加到sys.path
,以使其尽可能容易地在不同计算机上使用而不会出现问题。我已经阅读并且我知道绝对路径是执行此操作的最合适方法。
我的文件夹结构如下:
main/
__init__.py
tools/
__init__.py
script1.py
base/
__init__.py
script2.py
我一直在尝试在文件from main.tools.script1 import Foo
中进行main/base/script2.py
,但仍然收到错误ImportError: No module named main.tools.script1
。
如果打印的是sys.path
,则第一项是main/base/
。
如果我从main在终端上运行python,则可以导入tools.script1
,但不能编写main.tools.script1
。
我还阅读了其他文章,但对我来说仍然不清楚。
答案 0 :(得分:-1)
MyNiceProgram-1.0/
setup.py
README
LICENSE
bin/
myniceprogram.py # main entry point
myniceprogram/
__init__.py
tools/
__init__.py
script1.py
base
__init__.py
script2.py
然后使用:
from myniceprogram.tools import script1
from myniceprogram.base import script2
不要
main
-应该将其视为全局程序包,因此名称应具有描述性。如果您想要一个名为main
的软件包,请将其放入myniceprogram.main