首页 > 解决方案 > 处理python导入的好方法是什么?

问题描述

我在 python3 中工作了一年,但我仍然没有得到导入系统....
我总是将空的init .py 文件放在每个文件夹上。

但是,如果我的项目开始有嵌套目录(并且它经常附加很多),我必须进行一场战争才能导入我自己的模块(python认为他是谁????)......它正在驱动我疯了。

所以现在我发现的“最佳”技巧,但显然我对它并不满意,就是将这样的 ligne 放在我的文件顶部:

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(文件))))

我不喜欢它,首先是因为当目录嵌套在多个级别时,行非常长,然后因为我的 linter 总是对我大喊大叫,因为我的导入不在我的文件之上。

所以我想知道,我错过了什么?有我错过的信息吗?你的技术是什么?

谢谢 !


Can't import my own modules in Python 有人建议它类似于这个答案,但事实并非如此。首先我不想使用相对导入。
然后'sys.path.append(“..”)'在我看来并不干净,我的导入仍然不在我的文件之上。

基本上假设我的结构如下:

folder_a
----file_1
----file2
----folder_b
--------file_3
--------folder_c
------------file_4

我正在从 file_3 中的 file_1 实例化一个类,我必须这样做:

sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath( file )))))
from folder_a.file_1 import class_1

这样做显然是行不通的:

sys.path.append("..")
from folder_a.file_1 import class_1

这对我来说太不合逻辑了

标签: pythonpython-3.ximportpython-import

解决方案


如果您不想使用相对导入,并且不想弄乱 sys.path,则另一种选择是打包模块并使用pip install.

我认为阅读导入文档而不是仅仅试图“让它工作”将是有益的。Python 的文档非常好。用一杯好茶集中注意力,然后阅读:)


推荐阅读