zoukankan      html  css  js  c++  java
  • python基础】——python添加模块搜索路径和包的导入

    方法一:函数添加
    1 import sys
    2 查看sys.path
    3 添加sys.path.append("c:\")

    方法二:修改环境变量
    w用户可以修改系统环境变量PYTHONPATH

    方法三:增加.pth文件,推荐!
    在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。
     1 windows
        c:python27site-packages
    # 我们的学员把pth文件直接放在c:python27
    # (或其他python安装目录)目录下测试也是有效的
    # 2015.9.23
      2 linux(ubuntu)
       /usr/local/lib/python2.7/dist-packages  (note by shanql, 我是放在这个目录下有效的,所添加的目录一定要存在,不存在则会不成功)
    2 linux(redhat)

       /usr/lib/python2.7/site-packages

    包的调用

    为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

    每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件。

    跨包调用(当前目录下有modulepack1包):

    1 from modulepack1[.modulepack2] import module
    如果当前目录下能够找到要调用的包,可以直接from包import模块,如果当前目录找不到要调用的包,需要向sys.path添加包的所在绝对路径。

    import一个包名,就等于执行了这个包下的__init__文件。

    示例:

    在nod1里import  hello是找不到的,需要手动添加包路径,如果找到那是因为pycharm给加了不必要的路径,以命令行执行为准。

    1 import sys,os
    2 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #__file__获取执行文件相对路径,整行为取上一级的上一级目录
    3 sys.path.append(BASE_DIR)  #添加路径
    4 import hello
    5 hello.hello1()
    模块调用测试

    1 if __name__=='__main__':  #__name__方法判断
    2 print('ok')
    在一个py模块直接执行print(__name__)会输出__main__,表示当前这个文件属于执行文件,如果从其他的py模块中导入一个py模块,执行被导入的py模块中的print(__name__)会输出被导入的模块的模块名称,那么if判断就不会成功,所以导入的时候不会执行判断内的代码。

    主要用在调试功能,即一个模块被调用的时候不执行内容,而自己调试模块的时候可以顺利的执行模块内容。
    ————————————————
    版权声明:本文为CSDN博主「Teingi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_40449300/article/details/79327201

  • 相关阅读:
    arm SecurCore 处理器【转】
    ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57【转】
    arm处理器中a5 a8 a9,v6 v7,arm7 arm9 arm11都是依据什么来分类的【转】
    platform型设备在/dev目录下自动创建设备节点的分析【转】
    linux下bus、devices和platform的基础模型 【转】
    kernel 中 sscanf和sprintf()函数使用说明【转】
    Linux内核中的printf实现【转】
    sprintf,snprintf的用法(可以作为linux中itoa函数的补充)【转】
    Linux设备模型(3)_Uevent【转】
    Linux内核中的GPIO系统之(3):pin controller driver代码分析--devm_kzalloc使用【转】
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/11490966.html
Copyright © 2011-2022 走看看