Python模块和包的导入

Python模块和包的导入

1.1导入时的路径

​ 在Python内部默认设置了一些路径,导入模块或包时,都会按照指定顺序逐一去特定的路径查找。

import sys
print(sys.path)

想要导入任意的模块和包,都必须写在如下路径下,才能被找到。

也可以自动手动在sys.path中添加指定路径,然后再导入可以,例如:

import sys
sys.path.append("路径A")

import xxxxx  # 导入路径A下的一个xxxxx.py文件
  1. 你以后写模块名称时,千万不能和内置和第三方的同名(新手容易犯错误)。
  2. 项目执行文件一般都在项目根目录,如果执行文件嵌套的内存目录,就需要自己手动在sys.path中添加路径
  3. pycharm中默认会将项目目录加入到sys.path中

1.2关于导入的方式

  • Import xxx

    多用于 导入sys.path目录下的一个py文件

    • 模块级别

      ├── commons
      │   ├── __init__.py
      │   ├── convert.py
      │   ├── page.py
      │   ├── tencent
      │   │   ├── __init__.py
      │   │   ├── sms.py
      │   │   └── wechat.py
      │   └── utils.py
      ├── many.py
      └── run.py
      
      import many
      import commons.page
      import common.tencent.sms
      
      v1 = many.show()
      v2 = common.page.pagination
      v3 = commons.tencent.sms.send_sms()
      
    • 包级别

      ├── commons
      │   ├── __init__.py
      │   ├── convert.py
      │   ├── page.py
      │   └── utils.py
      ├── third
      │   ├── __init__.py
      │   ├── ali
      │   │   └── oss.py
      │   └── tencent
      │       ├── __init__.py
      │       ├── __pycache__
      │       ├── sms.py
      │       └── wechat.py
      └── run.py
      
      import commons
      import third.tencent
      
      v1 = commons.xx()
      v2 = third.tencent.xxx()
      
  • From xxx import xxx

    一般适用于多层嵌套和导入模块中某个成员的情况

    • 成员级别

      ├── commons
      │   ├── __init__.py
      │   ├── convert.py
      │   ├── page.py
      │   └── utils.py
      ├── many.py
      └── run.py
      
      from commons.page import pagination
      from commons.utils import encrypt,NAME
      from many import show
      

      基于from模式也可以支持from mang import *导入一个模块中所有的成员

    • 模块级别

      ├── commons
      │   ├── __init__.py
      │   ├── convert.py
      │   ├── page.py
      │   └── utils.py
      ├── many.py
      └── run.py
      
    • 包级别

      ├── commons
      │   ├── __init__.py
      │   ├── convert.py
      │   ├── page.py
      │   ├── tencent
      │   │   ├── __init__.py
      │   │   ├── sms.py
      │   │   └── wechat.py
      │   └── utils.py
      ├── many.py
      └── run.py
      

1.3 相对导入

在导入模块时,对与from xx import xx支持相对导入

相对导入只能用在包中的py文件中(i嵌套在文件中的py文件才可以使用,根目录下无法使用

你可能感兴趣的:(python,pycharm,开发语言)