Python import同级目录报错,sys.path

在这里插入图片描述
在这里插入图片描述

Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行。要包含目录里的文件,PHP中只需要给对路径就OK。Python中则不同,下面来看看这个例子。

目录结构:



一、a.py 要 import dir目录下的 b.py 文件。

a.py代码如下:

# coding=utf-8
"import dir 目录下的 b.py 文件"
import dir.b
print dir.b.name
执行 a.py 报错

提示找不到这个模块的名字 dir.b 。通过查找官方文档,发现要包含目录下的文件时需要在目录下声明一个__init__.py文件,即使这个文件是空的也可以。当然这个文件也可以初始一些数据。

于是在 dir 下新建 __init__.py文件,目录结构如下:



重新执行a.py,一切OK!

二、b.py 要 import test目录下的 a.py 文件。

这个时候需要使用到sys模块,b.py文件内容如下:

# coding=utf-8
"import dir 目录下的 b.py 文件"
import sys
sys.path.append('..')
import a
 

记录下:python 的 sys.path.append()

当我们导入一个模块时:import  xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中:

>>> import sys
>>> sys.path
['', 'C:\\Python352\\Lib\\idlelib', 'C:\\Python352\\python35.zip', 'C:\\Python352\\DLLs', 'C:\\Python352\\lib', 'C:\\Python352', 'C:\\Python352\\lib\\site-packages', 'C:\\Python352\\lib\\site-packages\\setuptools-28.6.1-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\pip-8.1.2-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\requests-2.11.1-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\xlutils-2.0.0-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\xlwt-1.1.2-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\pymongo-3.3.1-py3.5-win-amd64.egg', 'C:\\Python352\\lib\\site-packages\\pytz-2016.7-py3.5.egg', 'C:\\Python352\\lib\\site-packages\\zope.interface-4.3.3-py3.5-win-amd64.egg']
sys.path 返回的是一个列表!
该路径已经添加到系统的环境变量了,当我们要添加自己的搜索目录时,可以通过列表的append()方法;

对于模块和自己写的脚本不在同一个目录下,在脚本开头加sys.path.append('xxx'):

import sys
sys.path.append(’引用模块的地址')
这种方法是运行时修改,脚本运行后就会失效的。

另外一种方法是:

把路径添加到系统的环境变量,或把该路径的文件夹放进已经添加到系统环境变量的路径内。环境变量的内容会自动添加到模块搜索路径中。

原文:http://www.tuicool.com/articles/EB3miqr

sys模块包含了与python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性。
下面的两个方法可以将模块路径加到当前模块扫描的路径里:
sys.path.append('你的模块的名称')。
sys.path.insert(0,'模块的名称')
永久添加路径到sys.path中,方式有三,如下:
1)将写好的py文件放到 已经添加到系统环境变量的 目录下 ;
2)/usr/lib/python2.6/site-packages 下面新建一个.pth 文件(以pth作为后缀名) 
将模块的路径写进去,一行一个路径,如: vim pythonmodule.pth
/home/liu/shell/config
/home/liu/shell/base 
3) 使用PYTHONPATH环境变量
export PYTHONPATH=$PYTHONPATH:/home/liu/shell/config

python sys.path.append()和sys.path.insert()
2019-03-25阅读 2.7K0
python程序中使用 import XXX 时,python解析器会在当前目录、已安装和第三方模块中搜索 xxx,如果都搜索不到就会报错。 
 使用sys.path.append()方法可以临时添加搜索路径,方便更简洁的import其他包和模块。这种方法导入的路径会在python程序退出后失效。

1. 加入上层目录和绝对路径
import sys
sys.path.append('..') #表示导入当前文件的上层目录到搜索路径中
sys.path.append('/home/model') # 绝对路径
2. 加入当前目录
import os,sys
sys.path.append(os.getcwd())
os.getcwd()用于获取当前工作目录

3. 定义搜索优先顺序
import sys
sys.path.insert(1, "./model")
sys.path.insert(1,./crnn”)定义搜索路径的优先顺序,序号从0开始,表示最大优先级,sys.path.insert()加入的也是临时搜索路径,程序退出后失效。

>>> import sys
>>> sys.platform
'win32'

>>> import platform
>>> platform.system()
'Windows'
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值