python相对导包问题

导包分为:绝对路径、相对路径

在测试时发现不能够使用相对路径

查过之后才知道:

运行模块(如: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 runrun()

test.py

from .sub_pack.sub_test import adef run():    print(a)

sub_test

a = 1

项目中main.py才是主程序,所以只能有绝对路径;

而其他py文件中可以有绝对路径和相对路径

相对路径导入:

from .  import method/attr/class,只能从__init__中导入函数/变量等

from .m1 import class1与 from m1 import class1等同,都是从同级导入

参考:

ModuleNotFoundError: No module named ‘__main__.xxxx‘

原文地址:https://www.cnblogs.com/justaman/p/11378834.html

时间: 2024-11-09 02:50:21

python相对导包问题的相关文章

python 动态导包

import importlib kk= importlib.import_module('get_IP_package.config') # 某个py 文件的路径 , 或者 某个路径下的 类名 ,不能是方法名 print(kk.HOST_AND_PORT) # 调用时 , 直接后面传属性名,或者方法名即可调用 原文地址:https://www.cnblogs.com/chenxiyuxiao/p/10861391.html

python导包语句执行

今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错"login_class isnotdefined" 百思不得其解,后来发现是Python的导包机制问题,import语句只有在单独执行这个模块的时候会主动执行,别的类在调用它的方法时不会执行import语句,因此在进入登录后再选择回到首页,没有执行导包语句,所以会报错"login_class is not de

python 设置默认的导包路径

在python中 可以通过 sys 模块添加导包时的搜寻路径, sys.path 返回的是所有默认导包路径的列表(搜索次序从下标为零开始,直到寻找到需要导入的包结束) sys.path.insert(下标,包的路径) ,这样就可以将包的路径添加到指定下标(指定次序) 如在django 项目中的settings.py配置文件中,就可以通过下面这种方式,改变导入app时的默认导包路径 # Build paths inside the project like this: os.path.join(B

python导包问题,这一篇就够了

解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) # 导入包或模块 from db.mysql.my_connect import connect 一.背景 最近在写Python自动化

记一次Python导包经历

最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下 问题背景 1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方法 2)public_model_func.py里面导入了项目的其他包,其导包方式为from src.xxx.xxx import xxx,其中src为项目代码的根目录 3)项目处于运行状态,脚本是后续自己写的 解决过程 1)尝试在send_reward.py里面使用from src.xxx.xxx

Python/模块与包之模块

Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用模块? 3.1 import    通过import导入要使用的模块 1 #spam.py 2 print('from the spam.py') 3 4 money=1000 5 6 def read1(): 7 print('spam->read1->money',1000) 8 9 def

Python入门+进阶 第1章 Python入门导学(无论何时,只要开始就不晚)

1. Python入门导学 1.1 Python概念 Python(英国发音:/?pa?θ?n/ 美国发音:/?pa?θɑ?n/) 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交互式语言: 这意味着,您可以在一个Python提示符

网工学Python——模块和包

阅读目录 一 模块3.1 import3.2 from ... import...3.3 把模块当做脚本执行 3.4 模块搜索路径3.5 编译python文件二 包2.2 import 2.3 from ... import ...2.4 __init__.py文件2.5 from glance.api import *2.6 绝对导入和相对导入2.7 单独导入包 一 模块 1.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀.但其实

Eclipse4.7使用基础 使用快捷键导包时,遇到不同包下有同名类时,出现选择框

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) 初始状态:已经使用快键键进行导包,由于出现不包下存在同名类,出现选择框 以供选择 如果第一个是正确的话,选择第一个 效果 如果第二个是正确的话,选择第二个 效果 利用IDE的智能提示辅助修改 Java优秀,值得学习.Eclipse是一款免费.强大的IDE,值得学习使用.