Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理python导入的好方法是什么?_Python_Python 3.x_Import_Python Import - Fatal编程技术网

处理python导入的好方法是什么?

处理python导入的好方法是什么?,python,python-3.x,import,python-import,Python,Python 3.x,Import,Python Import,我在python3工作了一年,但仍然没有得到导入系统。。。。 我总是把空的init.py文件放在每个文件夹上 但是,如果我的项目开始有嵌套的目录,并且它附加了很多内容,并且经常我必须运行一个war才能导入我自己的模块,而python认为他是谁????。。。它快把我逼疯了 因此,目前我发现的“最好的”诀窍,但显然我并不满足于将ligne像这样放在我的文件上: sys.path.appendos.path.dirnameos.path.dirnameos.path.abspathfile 我不喜欢它

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

但是,如果我的项目开始有嵌套的目录,并且它附加了很多内容,并且经常我必须运行一个war才能导入我自己的模块,而python认为他是谁????。。。它快把我逼疯了

因此,目前我发现的“最好的”诀窍,但显然我并不满足于将ligne像这样放在我的文件上:

sys.path.appendos.path.dirnameos.path.dirnameos.path.abspathfile

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

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

谢谢大家!

有人建议这与这个答案相似,但事实并非如此。 首先,我不想使用相对导入。 在我看来,“sys.path.append..”是不干净的,我的导入仍然不在我的文件之上

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

文件夹a --文件1 --文件2 --文件夹 ----文件3 ----文件夹c ------文件4

我正在从文件\u 3中的文件\u 1实例化一个类,我必须执行以下操作:

sys.path.appendos.path.dirnameos.path.dirnameos.path.dirnameos.path.abspath文件 从文件夹_a.file_1导入类_1

这样做显然行不通:

sys.path.append。。 从文件夹_a.file_1导入类_1


这对我来说是不合逻辑的

如果您不想使用相对导入,也不想弄乱sys.path,另一个选项是打包模块并使用pip install进行安装


我认为,与其只是努力让它发挥作用,不如让它发挥作用。Python的文档非常好。喝上一杯好茶,集中注意力读一读:

这能回答你的问题吗?我不想进行相对导入,在我的文件顶部添加'sys.path.append..'对我来说似乎也是一个补丁。。有没有一种使用python的好方法是我错过的?@Kimor请接受以下建议:使用显式相对导入。在一个软件包中,这正是您需要使用的。您阅读的建议几乎肯定是关于Python2中的相对导入的,它不是显式的,并且在顶级名称和嵌套名称之间产生了歧义。Python 3没有这些问题。