python 怎么引入上python 文件上级目录录的文件

Python在不同目录下导入模块的方法 - CSDN博客
Python在不同目录下导入模块的方法
python在不同层级目录import模块的方法
使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。
1. 同级目录下的调用
目录结构如下:
|– mod1.py
|– test1.py
若在程序test1.py中导入模块mod1, 则直接使用
*import mod1*或from mod1 import *;
调用子目录下的模块
目录结构如下:
|– mod1.py
|– mod2.py
|– test1.py
这时,如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件
新的目录结构如下:
|– mod1.py
|–__init__.py
|– mod2.py
|– test1.py
然后使用:
from lib.mod2 import *或import lib.mod2.
3. 调用上级目录下的文件
目录结构如下:
|– mod1.py
|– mod2.py
|– test2.py
这里想要实现test2.py调用mod1.py和mod2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过import
lib.mod2进行调用了。具体代码如下:
import sys
sys.path.append('C:\\test\\A\\C')
import mod1
import lib.mod2
需要注意的一点是:sys.path添加目录时注意是在windows还是在Linux下,windows下需要‘\\’否则会出错。
补充__init__.py
在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的__init__.py 文件。
一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
__init__.py 中还有一个重要的变量,叫做__all__。
如果此时目录如下
|– mod1.py
|– mod2.py
|– mod3.py
|– mod3.py
我们有时会使出一招“全部导入”,也就是这样:
from lib import *
这时 import 就会把注册在包__init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件__init__.py
__all__ = ["mod2", "mod3", "sub"]
本文已收录于以下专栏:
相关文章推荐
python模块包调用问题  
13:43:38|  分类:
python |举报
|字号 订阅
   |----- __init__.py...
对于模块和自己写的程序不在同一个目录下,可以把模块的路径通过sys.path.append(路径)添加到程序中。
在程序开头加上:
import sys
sys.path.app...
python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。
下面将具体介绍几种常用情况:
1. 主程序与模块程序在同一目录下:
如下面程序结构:
Python import同级目录报错
有时候我们不想把所有的python module都放在一个文件夹下,我们希望发在不同的文件夹下,也就是java 的pakage的ga
/seeyeah/archive//55440.html
python包含子目录中的模块方法比较简单,关键是能够在sys.p...
转自://item/91f745ecdcaff7
python 引入 导入 自定义模块, python 引入 导入 外...
如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等,...
/seeyeah/archive//55440.html
Python包含子目录中的模块方法比较简单,关键是能够在sys.p...
/seeyeah/archive//55440.html
Python包含子目录中的模块方法比较简单,关键是能够在sys.p...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)python引入导入自定义模块和外部文件
python引入导入自定义模块和外部文件:项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包。
如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app也配上基本就ok了。
如果是本地代码,可以有几种方式,
1、这种最简单,也可能最不实用,将你的外部文件放到跟需要调用外部文件的文件同一个包下,同一目录
------toinvoke.py
------tobeinvoded.py
这样在toinvoke.py 中引入
import toveinvoked 或 from tobeinvoked import *
2、你的其他文件不是单个文件,或者不能如上所说放到同一目录下,而是在不同目录中,子目录
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
这种情况,现在folder 下新建一个__init__.py 的空文件,此时的folder不再是一个普通的文件夹,而是一个包 package,现在像这样
folder #文件夹 现在的性质为一个python包package
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
这样在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
3、同理,如果是如下的情况,folderB中的模块要调用folderA中的模块,方法同上,有什么改变,你已经知道了
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
--------toinvoke.py
这样在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
4、将要被调用的代码拷贝到$PYTHONHOME$\Lib\site-packages 下面,这个就跟Eclipse插件安装差不多
5、在$PYTHONHOME$\Lib\site-packages 下面新建一个.pth文件,比如说是MyPackage.pth,里面的内容是你的包的绝对路径比如:E:/Prj
那么,在E:/PythonPrj下的所有包都可以按照包所在的相对路径引入,这个跟Eclipse插件安装的link 方式差不多
6、跟上面的差不多,也可以加个环境变量,这个就不多说了
总结、看看Python的包搜索路径
Python会在以下路径中搜索它想要寻找的模块:
1. 程序所在的文件夹
2. 标准库的安装路径
3. 操作环境变量PYTHONPATH所包含的路径
将自定义库的路径添加到Python的库路径中去,有如下两种方法:
1. 动态的添加库路径。在程序运行过程中修改sys.path的值,添加自己的库路径
import sys
sys.path.append(r'your_path')
2. 在Python安装目录下的\Lib\site-packages文件夹中建立一个.pth文件,内容为自己写的库路径。示例如下
E:\\work\\Python\\http
E:\\work\\Python\\logging新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 124, 距离下一级还需 76 积分
论坛徽章:0
我用了from filename import *
结果会生成一个filename.pyc。
可不可以不生成这个pyc文件?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
腰缠万贯, 积分 9841, 距离下一级还需 159 积分
论坛徽章:0
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,py文件变成pyc文件后,加载的速度有所提高
白手起家, 积分 157, 距离下一级还需 43 积分
论坛徽章:0
frost.wrath
& & 你可以当这个文件不存在,如果有py文件,Python会检查修改时间,有必要时会重新生成pyc文件。至于如何抑制这个文件的生成,我没有研究。
丰衣足食, 积分 605, 距离下一级还需 395 积分
论坛徽章:0
类似这样&&& with open('./test.pyw') as f:
& & exec(f.read())复制代码不过有点傻就是了……
家境小康, 积分 1046, 距离下一级还需 954 积分
论坛徽章:0
starzhestarzhe
& & 虽然是编译,但,真不是二进制的,我cat了一下pyc文件,可以看到原来未编译前的字符串,我想,真是二进制不会是这样吧?!那是字节码~
腰缠万贯, 积分 9841, 距离下一级还需 159 积分
论坛徽章:0
& & 嗯,确实是字节码,这东东只是为了提高加载速度,对执行效率无影响
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
os.getcwd()比如我的返回值为 'C:\\Python27'若要改变工作目录,使用以下命令: os.chdir('d:\python')其中括号里面为你的目标目录。2.如果定义了很多函数,那么把这些函数放在同一个文件里面会显得很乱而且不方便阅读,和其他语言一样,可以把python的函数做成单独文件存放在工作目录,然后再主程序中调用,不过使用之前要import 以下文件名,比如我在工作目录d:\python下面有个文件fc1.py,里面有个return_ellipse_matrix()函数,可以使用以下命令调用; from fc1 import return_ellipse_matrix然后使用return_ellipse_matrix函数就可以了。当然,如果fc1文件里面有多个函数,想一块导入,可以使用:from fc1 import *注意:函数文件里面如果有中文注释,那么在注释的前面一行必须有下面一句命令:#-*-coding:UTF-8-*-否则导入时会出错:SyntaxError: Non-ASCII character '\xb6' in file fc1.py on line 1, but
see http://www.python.org/peps/pep-0263.html for details建议所有的python文件最开头加上下面两句话:#! /user/bin/python#-*-coding:UTF-8-*-第一句是保证在所有平台都可以使用,第二句则是保证可以使用中文注释。
阅读(2878)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_085066',
blogTitle:'python改变工作目录以及把函数存为单独文件并调用',
blogAbstract:'1.打开python shell,默认的工作目录为python的安装目录,可以通过以下命令查看: import os os.getcwd()比如我的返回值为 \'C:\\\\Python27\'若要改变工作目录,使用以下命令: os.chdir(\'d:\\python\')其中括号里面为你的目标目录。2.如果定义了很多函数,那么把这些函数放在同一个文件里面会显得很乱而且不方便阅读,和其他语言一样,可以把python的函数做成单独文件存放在工作目录,然后再主程序中调用,不过使用之前要import 以下文件名,比如我在工作目录d:\\python下面有个文件fc1.py,里面有个return_ellipse_matrix()函数,可以使用以下命令调用;',
blogTag:'python,工作目录,调用函数',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 python 上级目录 的文章

 

随机推荐