python相对导包问题
2024-09-04 04:41:59
导包分为:绝对路径、相对路径
在测试时发现不能够使用相对路径
查过之后才知道:
运行模块(如:main.py)中导包只能使用绝对路径,不能使用相对路径
官方文档:
Note that relative imports are based on the name of the current module. Since the name of the main module is always
__main__
, modules intended for use as the main module of a Python application must always use absolute imports.
例子:
main.py
from pack.test import run
run()
test.py
from .sub_pack.sub_test import a
def run():
print(a)
sub_test
a = 1
项目中main.py才是主程序,所以只能有绝对路径;
而其他py文件中可以有绝对路径和相对路径
相对路径导入:
from . import method/attr/class,只能从__init__中导入函数/变量等
from .m1 import class1与 from m1 import class1等同,都是从同级导入
update:
注意:绝对路径是从sys.path开始找,而相对路径是从当前路径开始找
参考:
ModuleNotFoundError: No module named '__main__.xxxx'
最新文章
- Unity 3D json嵌套使用以及多种类型匹配
- 【JS基础】
- 连连看游戏(dfs)【华为上机题目】
- NASA的下一个十年(译)
- ASP跨域调用Webservices方法
- Grunt一辈子的好基友:yeoman
- getLovParameter
- 利用 NUget包 EPPlus 实现数据导出到Excel(适用于DTcms)
- sql 的错误处理功能很弱
- Python 购物车---之商家部分
- 重写系统中的UINavigationController返回按钮的事件
- strace 分析 跟踪 进程错误
- 【NOIP2013提高组】火柴排队
- 集群通信组件Tribes之如何维护集群成员信息
- [Swift]LeetCode823. 带因子的二叉树 | Binary Trees With Factors
- 学习Axure RP原型设计
- NLP基础——词集模型(SOW)和词袋模型(BOW)
- laravel 守护进程Supervisor的配置
- Linux之cp、rm、mv
- Lozad.js 简单使用