python - 处理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
这对我来说太不合逻辑了
解决方案
如果您不想使用相对导入,并且不想弄乱 sys.path,则另一种选择是打包模块并使用pip install
.
我认为阅读导入文档而不是仅仅试图“让它工作”将是有益的。Python 的文档非常好。用一杯好茶集中注意力,然后阅读:)
推荐阅读
- git - Git 需要修改文件数量而不是在 windows 10 中显示文件,可以通过 git 命令行推送
- windows - Windows 内核:为什么我的内存映射不起作用?
- python - 如何编写程序以使用 Pyhton 中的字符串格式打印最多 2 位小数的浮点数
- c++ - 如何在c++中生成一个不等于n和m的1到k之间的随机数?
- python - 遍历帐号列中的每一行并使用这些行来读取其他 Excel 文件
- firebase - 在flutter中获取firebase中的所有注册用户
- c# - ISO 8601 字符串到 C# 日期时间:丢失时区
- javascript - 未处理的拒绝 (ReferenceError):未定义 createPromise
- ios - iOS: How to add Assets folder inside a Framework and how to access them in code?
- php - 出现错误 505,无法运行我的网站