【发布时间】:2021-01-29 16:59:15
【问题描述】:
我在python3工作了一年了,仍然没有得到导入系统....
我总是将空的 init.py 文件放在每个文件夹中。
但是,如果我的项目开始有嵌套目录(并且它经常附加很多),我必须进行一场战争才能导入 我自己的 模块(python 认为他是谁? ???)...快把我逼疯了。
所以目前我发现的“最佳”技巧,但显然我并不满意,就是将这样的 ligne 放在我的文件顶部:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(file))))
我不喜欢它,首先是因为当目录嵌套在多个级别时,行非常长,然后因为我的 linter 总是对我大喊大叫,因为我的导入不在我的文件之上。
所以我想知道,我错过了什么?有我错过的信息吗?你的技术是什么?
谢谢!
Can't import my own modules in Python
有人建议它与此答案相似,但事实并非如此。
首先我不想使用相对导入。
那么 'sys.path.append("..")' 在我看来并不干净,我的导入仍然不在我的文件之上。
基本上假设我有这样的结构:
文件夹_a
----file_1
----文件2
----文件夹_b
--------文件_3
--------文件夹_c
------------file_4
我在 file_3 中从 file_1 实例化一个类,我必须这样做:
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(文件)))))
从文件夹_a.file_1 导入类_1
这样做显然行不通:
sys.path.append("..")
从文件夹_a.file_1 导入类_1
这对我来说太不合逻辑了
【问题讨论】:
-
这能回答你的问题吗? Can't import my own modules in Python
-
我不想进行相对导入,在我的文件顶部添加 'sys.path.append("..")' 似乎对我来说也是一个补丁.. 是'有没有我错过的使用 python 的好方法?
-
@Kimor 请采纳这个建议:使用明确的相对导入。在一个包中,这正是您需要使用的。您阅读的建议几乎肯定是关于在 Python 2 中的相对导入,这些建议并不明确,并且在顶级名称和嵌套名称之间造成了歧义。 Python 3 没有这些问题。
标签: python python-3.x import python-import