zoukankan      html  css  js  c++  java
  • python3导入自定义模块

    模块是个好东西啊,大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到 ↓

    https://pypi.python.org/pypi

    因为刚入门所有有很多细节不懂,在网上搜寻资料的时候发现各位大神们的教程实在太过于精简,让我这个菜鸟很辛苦的才操作成功。

    因此在这里记录下来。


    开始

    第一种,直接 import

    这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录),如下图:

    01

    • main.py 和 pwcong模块同在python目录
    • 执行文件为main.py
    • pwcong文件夹为一个模块

    我把pwcong模块提供的函数写在 __init__.py 里,里面只提供一个 hi 函数:

    # pwcong 模块的 __init__.py
    # -*- coding: utf-8 -*-
    
    def hi():
        print("hi")

    执行文件main.py直接import模块:

    # main.py
    # -*- coding: utf-8 -*-
    
    import pwcong
    
    pwcong.hi()
    

    接着我们运行一下main.py可以看到命令行窗口输出了一句 hi ,第一种方式完成。

    使用模块方式为:先导入-》接着输入模块.变量|函数, 如上面例子的 pwcong.hi()


    第二种,通过sys模块导入自定义模块的path

    如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。如下图:

    02

    • 执行文件main.py在main目录下
    • pwcong模块在python目录下

    sys模块是Python内置的,因此我们导入自定义模块的步骤如下:

    1. 先导入sys模块

    2. 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录

    3. 导入自定义模块。

    这时候 main.py 这样写:

    # main.py
    # -*- coding: utf-8 -*-
    
    import sys
    sys.path.append(r"C:UsersPwcongDesktoppython")
    
    import pwcong
    
    pwcong.hi()
    

    最后执行main.py文件,最终输出 hi ,第二种方式完成。


    第三种,通过pth文件找到自定义模块

    这个方法原理就是利用了系统变量,python会扫描path变量的路径来导入模块,可以在系统path里面添加。但是我还是推荐使用pth文件添加。

    模块和执行文件目录结构跟上图一样:

    02

    • 执行文件main.py在main目录下
    • pwcong模块在python目录下

    我们创建一个 module_pwcong.pth 文件,里面内容就是 pwcong模块所在的目录:

    C:UsersPwcongDesktoppython

    将该 module_pwcong.pth 文件放到这里: 
    python安装目录Python35Libsite-packages

    例如我的: 
    03

    然后 main.py 导入并使用自定义模块:

    # -*- coding: utf-8 -*-
    
    import pwcong
    
    pwcong.hi()
    

    最后执行 main.py 文件,可以输出 hi ,第三种方式完成。


    结束

    到这里三种导入自定义模块的方式栗子就完成了,我写的应该很详细了吧 :)

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/duex/p/6703009.html
Copyright © 2011-2022 走看看