我有这样的结构:
app.py
sub/
__init__.py
lib.py
utils.py
在app.py
中,我想做这样的事情:
from sub.lib import some_func
在lib.py
中,我希望能够导入utils.py
。你知道吗
我还希望可以直接将lib.py
作为脚本执行
问题是,如果我将lib.py
作为脚本启动,它将不是一个包,因此,它不能使用相对导入,因此from .utils import some_util_func
之类的东西将不起作用。但是,如果我将lib.py
作为sub
包的一部分导入,则只有相对导入可以工作。你知道吗
我该怎么解决这个问题?(以一种简单的方式。例如,不创建另一个小包装器脚本来调用lib.py
。)
例如,如果有一种方法将__main__
模块标记为一个包,它将解决这个问题。但是怎么做呢?这可能吗?例如,通过定义__path__
左右?你知道吗
启动程序时可以设置PYTHONPATH环境变量。你知道吗
只需从lib目录键入:
好吧,事实上,我最后的评论真的很有效。如果我在
lib.py
的开头加上这个,似乎可以:(关于
__path__
,参见例如here。)此外,在PEP 366中提到:
我还没试过呢。你知道吗
相关问题 更多 >
编程相关推荐