python不同包之间调用时出现文件模块不存在的问题

python对于跨包调用函数时,经常会提示模块不存在的问题,主要是python程序执行时,搜索路径导致的,python程序执行的路径依次是:

(1)程序根目录
(2)环境变量
(3)标准库目标(D:\Python27\Lib  标准库是在lib文件下)
(4)第三方库的目录(D:\Python27\Lib\site-packages  第三方库在site-packages文件下)

如下图所示,明明test1文件是存在的,但是跨包调用时,就出现test1不存在的问题

解决的办法是,可以把调用文件的主目录加到环境变量中

操作步骤:

import os
import sys

#步骤1:当前处于pack2d的test2文件目录,路径为dir1
dir1=os.path.dirname(__file__)
print ‘当前文件目录:‘,dir1

#步骤2:pack2的主目录是day6,路径为:dir2
dir2=os.path.dirname(os.path.dirname(__file__))
print ‘当前文件的主目录:‘,dir2

#步骤3:把day6目录加到环境变量中
sys.path.append(dir2)
for item in sys.path:
   print item

#步骤4:直接导入test1文件,然后再次调用test1里面的函数,不会再报错了
import test1
test1.testfun()

执行结果如下:

test1中函数内容是:

原文地址:https://www.cnblogs.com/Qliupeng/p/11717417.html

时间: 2024-08-30 04:56:19

python不同包之间调用时出现文件模块不存在的问题的相关文章

python中不同包之间调用方法、

在pycharm中... 当两个py文件在同一个文件夹下的时候.直接from 文件名 import *  即可 当两个文件在不同的文件夹下的时候.需要在文件中加入 _init_.py 文件.里面可以什么也不用写.但是需要有这个文件. 然后 import 文件夹名.py文件名  import  *  就可以调用不同文件夹下的 A文件夹 B文件夹 _init_.py D.py c.py e.py c中导入e: from e import * c中导入D: from B文件夹.D import * D

python和redis之间的交互

python和redis之间的交互 一. redis模块 安装模块: pip3 install redis 连接方式: r = redis.Redis(host='localhost',port=6379) 连接池:为了节约资源,减少多次连接带来的消耗. pool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) 二.redis操作 常规操作: import redis r = redis.Redis(h

python模块与模块之间的调用、包与包之间的调用

模块与模块之间的调用: 1.一个python工程就是一个包,在一个包中可以有多个python文件,一个python文件就是一个模块,一个模块当中可以有类.函数.变量,在我们的工作当中,经常会遇到模块与模块之间的调用 2.调用时,模块的类.函数.变量引入方式.新建first模块,first模块包含类.函数.变量.新建second模块,second模块调用first模块当中的类.函数.变量 first模块: #类class index(object): #类当中的方法 def hello(self)

Python中函数、类、模块和包的调用

初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. ?(1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么可以直接调用,即:summ(1,2) (2) 类 类定义好之后,不能像函数一样直接调用,而需要间接调用. 比如:class people,那么调用时,a=people(对象),之后,a.age()等等 (3) 模块 将多个类放在同一个py下,比如放在model.py中,则import model即可

Python基础----import模块导入和包的调用

模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. 相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突.但是也要注意,尽量不要与内置函数名字冲突. 模块导入 import语句 1 import module1[, module2[,... moduleN] 使用import语句时候,Python

Python中包(package)的调用方式

 一.什么是Python Package 如何区分你看到的目录是一个Python Package包呢?其实很简单,你只要看这个名录下是否有“__init__.py”这个文件就好了,如果有那么就是Python Package包,如果没有,就说嘛你看到的就是个普通的目录,如下图,你就可以看出来"calcuate"和"Log"就是一个Python Package包,而"yinzhengjie"就是一个目录,而判断的依据就是是否包含_init__.py文

模块与包之间的调用

一. 模块 定义: 如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块. 模块可以分为自定义模块.内置模块和第三方模块 1.内置模块 2.第三方模块 3.自定义模块 什么叫自定义模块? 自定义模块就是你自己编写的模块 ,在Python中,其后缀名是.py 就是一个模块 例如: 在Pycharm里建个py文件module,写入代码: def say_h

python模块与包的调用

模块(module) 什么是模块 一个 .py文件 就是一个模块(Module).在开发过程中我们不会把所有的代码都写在一个 .py文件 中.随着代码量的增大,可以按照功能将函数或者类分开存放到不同的 .py文件 中.?这样代码更方便管理,以及后期的维护,也便于其他程序来调用当前已经实现的功能~?在开发过程中,我们也经常引用其他模块,例如:time,os,configparser,re 等等在Python中模块一般有如下3种:1)Python内置模块2)第三方模块3)自定义模块 模块的导入 im

Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用

在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很不了解这个空文件的作用是什么,因为没有什么东西可写在这里,所以我直接把这个文件给删掉了,结果我的包图标自动变为文件夹图标了,这是怎么回事呢! 原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有 __ini