说我使用Python 3(因此绝对进口)和我的目录结构是这样的:如何在Python中将模块导入同时用作__main__并由不同目录中的文件导入的文件中?
> package:
> sub_directory
__init__.py
sub_dir_file.py
sub_dir_file2.py
__init__.py
main_dir_file.py
在文件sub_dir_file.py
我希望从sub_dir_file2.py
导入功能。值得注意的是,我希望能够运行sub_dir_file.py
与__name__ == '__main__'
,以及导入main_dir_file.py
。因此,如果在sub_dir_file.py
我使用相对进口:
from .sub_dir_file2 import some_function
模块执行从main_dir_file.py
运行时完全没有问题,但将引发时直接执行一个错误(作为相对进口不能被执行时__name__ == '__main__'
如果我然而使用?正常的绝对导入,sub_dir_file.py
将执行为主,但不能从main_dir_file.py
进口
什么将是解决这一问题的最优雅的方式一个明显的解决办法似乎是:
if __name__ == '__main__':
from sub_dir_file2 import some_function
else:
from .sub_dir_file2 import some_function
然而,它似乎并不pythonic。