1. 什么是 Python Package?

一个 Python Package 是一个包含多个 Python 模块(.py 文件)的目录,并且必须包含一个特殊的文件 __init__.py(在 Python 3.3+ 的命名空间包中不再是强制要求,但常见)。包的作用是组织相关的模块,避免模块名冲突。

例如,一个名为 mypackage 的包结构可能如下:

text

mypackage/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py

2. 使用包的核心步骤

步骤一:安装包

绝大多数情况下,我们使用第三方包。它们需要通过包管理工具 pip 来安装。

  • 从 PyPI(Python 包索引)安装:这是最常见的方式。

    bash

    pip install package_name
    • 示例:pip install requests 安装著名的 HTTP 请求库。

    • 示例:pip install numpy pandas matplotlib 一次性安装多个包。

  • 安装特定版本

    bash

    pip install package_name==1.4.2
  • 从本地源码安装(例如,你下载或克隆的包):

    bash

    pip install /path/to/package/directory
  • 从需求文件安装(常用于项目部署):

    bash

    pip install -r requirements.txt

    requirements.txt 文件内容示例:

    text

    requests>=2.25.1
    numpy==1.21.0
    pandas
步骤二:在代码中导入包/模块

安装后,你就可以在 Python 脚本中使用 import 语句来引入包的功能。

  • 导入整个包/模块

    import pandas
    df = pandas.DataFrame(...) # 使用时需要前缀
  • 给包/模块起别名(非常常用,特别是长名字或通用别名):

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    df = pd.DataFrame(...) # 使用别名
  • 从包中导入特定的函数/类/变量

    from math import pi, sqrt
    from requests import get, post
    print(pi) # 直接使用,无需前缀
  • 从子模块中导入(常见于大包):

    from sklearn.linear_model import LinearRegression
    from os.path import join
  • 导入模块中的所有内容不推荐,容易引起命名冲突):

    from math import *

3. 创建你自己的包

如果你想让自己的代码被重用,可以将其组织成一个包。

  1. 创建目录结构

    my_project/
    │   setup.py       # 包的描述和配置信息
    │
    └───mypackage/     # 这是你的包
        │   __init__.py
        │   module1.py
        │   module2.py
        │
        └───subpackage/
                __init__.py
                module3.py
  2. 编写 __init__.py
    这个文件可以为空,但它标志着这是一个包。你也可以在里面写初始化代码,或定义 __all__ 列表来控制 from mypackage import * 的行为。

  3. 编写 setup.py(关键步骤):
    这个文件告诉 pip 如何安装你的包。

    from setuptools import setup, find_packages
    
    setup(
        name='mypackage',        # 包名
        version='0.1.0',         # 版本
        packages=find_packages(), # 自动查找包
        install_requires=[],     # 依赖的其他包,例如 ['requests>=2.25.1']
        author='Your Name',
        author_email='your.email@example.com',
        description='A simple example package',
    )
  4. 安装你自己的包(用于开发)
    在 my_project 目录下,运行以下命令,使其可以在其他 Python 脚本中像普通包一样被导入。

    pip install -e .

    -e 代表“可编辑模式”,这意味着你对源码的修改会立刻生效,无需重新安装。

4. 虚拟环境(最佳实践)

强烈建议为每个项目使用虚拟环境。它可以隔离不同项目所需的包版本,避免冲突。

  • 创建虚拟环境

    python -m venv my_project_env
  • 激活虚拟环境

    • Windows (CMD/PowerShell):

      my_project_env\Scripts\activate
    • macOS/Linux:

      bash

      source my_project_env/bin/activate

    激活后,命令提示符前会显示环境名 (my_project_env)

  • 在激活的虚拟环境中安装包

    bash

    pip install requests pandas

    所有包只会安装到这个隔离的环境中。

  • 退出虚拟环境

    deactivate
  • 导出环境中的包列表(用于共享项目):

    bash

    pip freeze > requirements.txt

总结

操作 常用命令
安装包 pip install package_name
安装本地包(开发模式) pip install -e .
列出已安装的包 pip list 或 pip freeze
卸载包 pip uninstall package_name
创建虚拟环境 python -m venv env_name
导入包 import package 或 from package import something

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐