Python中模块的搜索路径实例讲解
2018-03-01 13:33
2091 查看
2018年3月1日13:26:09最近在工作的时候遇到一个问题,我首先是拿到别人现成的代码,代码如下:import os,sys,re
import datetime
import threading
import subprocess
import configparser
import sendmail
from loggers import myLog
sys.path.append(os.getenv('HIVE_TASK'))
from HiveTask import HiveTask但是当我输出'HIVE_TASK'环境变量的数值的时候,运行结果竟让为None,如下所示:#!/usr/bin/python
# -*- coding:utf-8 -*-
"""
function:本函数的功能是获取表的location
"""
import os
import sys
print(os.getenv('HIVE_TASK'))运行结果如下:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ python3 test.py
None当时第一反应,什么情况,环境变量怎么没有,于是我改了一下脚本:import os,sys,re
import datetime
import threading
import subprocess
import configparser
import sendmail
from loggers import myLog
from HiveTask import HiveTask当我运行这个脚本的时候发现竟然没有报错,也就是说可以找到HiveTask这个py文件(模块),到底是怎么找到的呢?
我查看了一下模块正常的搜索路径:"""
function:本函数的功能是获取表的location
"""
import os
import sys
for path in sys.path:
print(path)输出结果:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ python3 test.py
/home/dd_edw/zhang_dd_edw
/home/dd_edw/zhang_dd_edw
/software/edw/common/HiveTask
/usr/local/lib/python32.zip
/usr/local/lib/python3.2
/usr/local/lib/python3.2/plat-linux2
/usr/local/lib/python3.2/lib-dynload
/usr/local/lib/python3.2/site-packages可以看出HIVETASK这个模块应该是在/software/edw/common/HiveTask这个路径下面,但是为什么会找到这个路径呢?
我们都知道模块正常的搜索路径:
第一:内置模块当中去搜索
第二:执行文件所在的当前目录
第三:环境变量PYATHONPATH指定的路径列表中
第四:python安装的lib库中
于是我查看了一下环境变量PYATHONPATH的数值:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ echo $PYTHONPATH
:/software/edw/common/HiveTask/瞬间明白了,原来是通过PYTHONPATH--->/software/edw/common/HiveTask/----->HiveTask模块的。
后来特意问了一下,之前环境变量里面确实有那么一个环境变量HIVE_TASK,只不过后来不用了,写到了
PYTHONPATH里面去了。
import datetime
import threading
import subprocess
import configparser
import sendmail
from loggers import myLog
sys.path.append(os.getenv('HIVE_TASK'))
from HiveTask import HiveTask但是当我输出'HIVE_TASK'环境变量的数值的时候,运行结果竟让为None,如下所示:#!/usr/bin/python
# -*- coding:utf-8 -*-
"""
function:本函数的功能是获取表的location
"""
import os
import sys
print(os.getenv('HIVE_TASK'))运行结果如下:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ python3 test.py
None当时第一反应,什么情况,环境变量怎么没有,于是我改了一下脚本:import os,sys,re
import datetime
import threading
import subprocess
import configparser
import sendmail
from loggers import myLog
from HiveTask import HiveTask当我运行这个脚本的时候发现竟然没有报错,也就是说可以找到HiveTask这个py文件(模块),到底是怎么找到的呢?
我查看了一下模块正常的搜索路径:"""
function:本函数的功能是获取表的location
"""
import os
import sys
for path in sys.path:
print(path)输出结果:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ python3 test.py
/home/dd_edw/zhang_dd_edw
/home/dd_edw/zhang_dd_edw
/software/edw/common/HiveTask
/usr/local/lib/python32.zip
/usr/local/lib/python3.2
/usr/local/lib/python3.2/plat-linux2
/usr/local/lib/python3.2/lib-dynload
/usr/local/lib/python3.2/site-packages可以看出HIVETASK这个模块应该是在/software/edw/common/HiveTask这个路径下面,但是为什么会找到这个路径呢?
我们都知道模块正常的搜索路径:
第一:内置模块当中去搜索
第二:执行文件所在的当前目录
第三:环境变量PYATHONPATH指定的路径列表中
第四:python安装的lib库中
于是我查看了一下环境变量PYATHONPATH的数值:[dd_edw@BJHC-Client-144113 zhang_dd_edw]$ echo $PYTHONPATH
:/software/edw/common/HiveTask/瞬间明白了,原来是通过PYTHONPATH--->/software/edw/common/HiveTask/----->HiveTask模块的。
后来特意问了一下,之前环境变量里面确实有那么一个环境变量HIVE_TASK,只不过后来不用了,写到了
PYTHONPATH里面去了。
相关文章推荐
- Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import
- 为Python添加默认模块搜索路径
- Python添加默认模块搜索包路径
- 【python学习笔记】模块导入的搜索路径顺序是什么?
- Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import
- Python collections模块实例讲解
- Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import(转)
- 显示python已安装模块及路径,添加修改模块搜索路径
- Python学习3:搜索路径和模块
- Python模块包和搜索路径
- python添加模块搜索路径方法
- 为Python添加默认模块搜索路径
- Python学习笔记-模块介绍(三)-模块包和搜索路径
- Python 安装模块 & 模块搜索路径
- 如何添加Python的模块搜索路径
- Python 实现删除某路径下文件及文件夹的实例讲解
- 为python添加搜索模块路径
- 为Python添加默认模块搜索路径
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 将自定义python模块增加到类库搜索路径下面