Skip to content

setup

开发模式

python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

-e编辑模式 .当前目录 命令的作用是以可编辑模式安装当前目录中的 Python 项目。这意味着项目会被安装到一个虚拟环境中,但源代码仍然可以从项目的源目录中进行修改和编辑,非常适合开发过程中的迭代和调试。

结构解析

from setuptools import setup, find_packages

# 读取 README.md 文件内容,用于 long_description
with open('README.md', 'r', encoding='utf-8') as f:
    long_description = f.read()







setup(
    # 项目名称
    name='your_project_name',
    # 项目版本
    version='0.1',
    # 自动查找项目中的所有包
    packages=find_packages(),
    # 当使用packages时,不用定义py_modules
    # 包中包含一个名为 local_filter 的 Python 模块。这个模块应该是一个单独的 .py 文件,例如 local_filter.py。
    # 当使用 py_modules 参数时,setuptools 会在安装包时将指定的模块复制到目标环境中。这样,用户就可以在他们的代码中导入和使用这些模块。
    # py_modules=['local_filter'],
    # 项目依赖的其他 Python 包
    install_requires=[
        'requests',
        'numpy',
    ],
    # 定义可执行脚本
    # my_plugin_system 是插件系统的名称。
    # plugin_name 是插件的名称。
    # another_package.plugin_module:plugin_class 指定了插件的具体实现类。
    entry_points={
        'my_plugin_system': [
            'plugin_name=another_package.plugin_module:plugin_class',
        ],
    },
    # 项目作者
    author='Your Name',
    # 作者的电子邮件地址
    author_email='your.email@example.com',
    # 项目的简短描述
    description='A short description of your project',
    # 项目的详细描述,从 README.md 文件中读取
    long_description=long_description,
    # 详细描述的内容类型,通常是 text/markdown
    long_description_content_type='text/markdown',
    # 项目的源代码仓库地址
    url='https://github.com/yourusername/yourproject',
    # 项目的分类信息,帮助 PyPI 和其他工具了解项目的特性
    classifiers=[
        'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
    ],
)

查找插件

# 查找entry_points定义的插件
import pkg_resources
def load_plugins():
    for entry_point in pkg_resources.iter_entry_points('mkdocs.plugins'):
        # plugin_class = entry_point.load()
        # plugin_instance = plugin_class()
        # 使用插件实例
        print(f'Loaded plugin: {entry_point.name}')
load_plugins()

init

init.py 文件在 Python 包中起着非常重要的作用。它主要有以下几个作用:

  1. 标识目录为 Python 包 在 Python 中,一个包含 init.py 文件的目录被视为一个包。如果没有这个文件,Python 会认为这个目录只是一个普通的文件夹,而不是一个包。

  2. 初始化包 init.py 文件可以包含包的初始化代码。当你导入一个包时,init.py 文件中的代码会自动执行。这使得你可以在包级别进行一些初始化操作,比如设置全局变量、导入子模块等。

  3. 控制包的导入行为 通过在 init.py 文件中定义 all 变量,你可以控制 from package import * 语句的行为。all 是一个字符串列表,列出了当使用 from package import * 时应该导入的模块或子包名称。

  4. 定义包级别的变量和函数 你可以在 init.py 文件中定义包级别的变量和函数,这样它们就可以在整个包中使用。

your_project/
├── setup.py
├── your_package/
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py