python 模块导入问题汇总

问题描述

此时start.py是启动程序,引入了core包中的user_control,transfer,withdraw三个模块文件

但执行start.py的时候,出现了以下错误:

上图中显示的问题是:在transfer.py导入user_control模块的时候,无法找到该模块。

问题查找

当时我就纳闷了,user_controltransfer在同一个包中,按理来说不用做任何处理就能导入.而且在导入user_control的时候也没有报错。

然后我单独执行了transfer.py文件,没有报错,也就是说能够找到user_control,但是为何在执行start.py的时候又找不到呢?

我对比了user_controltransfer文件,发现一个不同之处,就是user_control没有导入其他同包的文件,而transfer有。我想这是不是问题所在。

我将transfer中的import user_control注释掉后,再次运行start.py后就不会再报错了。

找到问题了,但是还是不明白这是为啥?

我猜想是不是因为运行start.py的时候,sys.path中没有core包的路径,导致transfer模块找不到user_control

所以我在start.py中,导入core包前,将core包的路径加入到sys.path。

我再次运行start.py,果然,程序没有再报错了。

原来是执行start.py时,transfer按照此时的sys.path进行查找user_control,而此时的sys.path中又没有core包的路径,所以导致错误。

总结

当执行py文件的时候,此时的py解释器会根据此时的sys.path查找模块,模块中也会使用该sys.path进行查找自己引入的模块,所以要确保执行的py文件引入的模块,和这些模块中引入的模块的路径在sys.path中。

到此这篇关于python 模块导入问题汇总的文章就介绍到这了,更多相关python 模块导入问题分析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 环境变量和import模块导入方法(详解)

    1.定义 模块:本质就是.py结尾的文件(逻辑上组织python代码)模块的本质就是实现一个功能 文件名就是模块名称 包: 一个有__init__.py的文件夹:用来存放模块文件 2.导入模块 import 模块名 form 模块名 import * from 模块名 import 模块名 as 新名称 3. 导入模块本质 import 模块名 ===> 将模块中所有的数据赋值给模块名,调用时需要模块名.方法名() from 模块名 import 方法名 ==>将该方法单独放到当前文件运行一遍

  • Python xlrd模块导入过程及常用操作

    简介 读取Excle文档,支持xls,xlsx格式 安装:pip3 install xlrd 导入:import xlrd xlrd 模块方法 读取Excel file = 'route_info.xls' # 读取Excel信息,生成对象 read_book = xlrd.open_workbook(file) 获取sheet[表]相关方法,返回xlrd.sheet.Sheet()对象 sheet = read_book.sheets() # 获取全部sheet列表 print(sheet)

  • python 中的列表生成式、生成器表达式、模块导入

    5.16 列表生成式 l=[] for i in range(100): l.append('egg%s' %i) print(l) ​ l=['egg%s' %i for i in range(100)] l=['egg%s' %i for i in range(1000) if i > 10] print(l) 5.17 列表生成式与生成器表达式的应用 names=['egon','alex_sb','wupeiqi','yuanhao','lxx'] res=map(lambda x:x.

  • python模块导入的细节详解

    python模块导入细节 本文主要介绍了关于python模块导入的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 不用与执行,仅用于被其它python源码文件导入的模块文件 例如文件a.py和b.py在同一目录下,它们的内容分别是: # b.py x="var x in m

  • python3 动态模块导入与全局变量使用实例

    动态导入有两种: 1 __main__(): f="demo.A" aa=__main__(f) aa.A.t() 2 import importlib: import importlib f="demo.A" aa=importlib.import_module(f) aa.t() 全局变量使用: global_list.py: size=None A.py: from demo import global_list global_list.size=101 fr

  • python模块导入的方法

    模块在python编程中的地位举足轻重,熟练运用模块可以大大减少代码量,以最少的代码实现复杂的功能. 下面介绍一下在python编程中如何导入模块: (1)import 模块名:直接导入,这里导入模块中的所有与函数: import configparser import time import sys 这里的模块也可以是自己编写的脚本名称,如: #hello.py def hello1(): print("hello world!") import hello (2) from 模块名

  • Python中的模块导入和读取键盘输入的方法

    导入模块 import 语句 想使用Python源文件,只需在另一个源文件里执行import语句,语法如下: import module1[, module2[,... moduleN] 当解释器遇到import语句,如果模块在当前的搜索路径就会被导入. 搜索路径是一个解释器会先进行搜索的所有目录的列表.如想要导入模块hello.py,需要把命令放在脚本的顶端: #!/usr/bin/python # -*- coding: UTF-8 -*- # 导入模块 import support # 现

  • 对Python模块导入时全局变量__all__的作用详解

    Python中一个py文件就是一个模块,"__all__"变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现. 1.在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中, 如:全局变量,函数,类.如下,test1.py和main.py test1.py __all__=["test"] def test(): print('----test-----') def test1(): print('----test1----

  • Python创建模块及模块导入的方法

    本文实例讲述了Python创建模块及模块导入的方法.分享给大家供大家参考.具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块. 比如说,下面的代码输入到一个文件中,就可以看作是一个模块: def printme(var): print var if __name__ == '__main__': printme(1) 假设说输入到a.py中,那么import a就可

  • 浅谈python中requests模块导入的问题

    今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: python中还没有安装requests库 解决办法: 1.先找到自己python安装目录下的pip 2.在自己的电脑里打开cmd窗口. 先点击开始栏,在搜索栏输入cmd,按Enter,打打开cmd窗口.在cmd里将目录切换到你的pip所在路径. 比如我的在C:\Python27\Scripts这个目录下,先切换到d盘,再进入这个路径. 具体命令:cd.

随机推荐