在两种情况下,您都将无法使导入工作。这是因为在一种情况下,您将pack.py作为主文件运行,而在另一种情况下,您将其作为软件包的一部分运行。
当您将其作为独立脚本运行时
python pack.py,“
pack”目录将添加到PYTHONPATH中,这意味着您可以导入其中的任何模块。因此,
import util将工作。
运行时
pythonmain.py,将src目录添加到PYTHONPATH中。这意味着目录中的任何模块或软件包(
src例如
pack目录)现在都可以导入。因此
frompack import pack。但是,
util.py现在您需要访问
from pack importutil。正如您所注意到的,您也可以
from . import util从内部执行操作
pack.py。
但是,您不能同时真正做到两者。要么
src/是主目录,要么
src/pack是。
一个明显但错误的解决方案是让main.py将
src/pack目录添加到PYTHONPATH中。那会起作用,但这不是一个好主意。正确的方法是下定决心。是
src/pack应该通过导入模块,
importpack还是仅仅是带有一堆Python脚本的文件夹?决定!:-)
我认为在这种情况下,显然
src/pack应该将其作为模块。因此,请像对待模块一样对待它,并确保它像模块一样可用。这样您
from pack importutil甚至可以在
pack.py作为主脚本运行时使用。
你是怎样做的?好吧,基本上,您可以将pack模块安装在站点程序包中,或者将
src目录添加到PYTHONPATH中。最后一个就是您在开发过程中想要的。您可以使用手动进行
exportPYTHonPATH=<path>,也可以让测试运行人员为您完成。您没有测试运行程序?好吧,你应该,但这是另一个问题。:)
要在不再进行开发后永久安装它,请查看Distribute。它包括一个测试运行程序。;)



