nonebot / nonebot2

跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python
https://nonebot.dev
MIT License
5.97k stars 555 forks source link

Plugin: nonebot-plugin-starzai-memu #2290

Closed ghost closed 1 year ago

ghost commented 1 year ago

PyPI 项目名

nonebot-plugin-starzai-memu

插件 import 包名

nonebot_plugin_starzai_memu

标签

[]

插件配置项

No response

noneflow[bot] commented 1 year ago

📃 商店发布检查结果

Plugin: nonebot-plugin-starzai-memu

⚠️ 在发布检查过程中,我们发现以下问题:

  • ⚠️ 无法获取到插件元数据。
    请确保插件正常加载。
  • ⚠️ 插件加载测试未通过。
    测试输出插件 nonebot-plugin-starzai-memu 的信息如下: name : nonebot-plugin-starzai-memu version : 0.1.3 description : 星崽BOt-菜单 dependencies - nonebot2 * 插件 nonebot-plugin-starzai-memu 依赖的插件如下: 插件 nonebot_plugin_starzai_memu 加载出错: 08-30 07:57:52 [SUCCESS] nonebot | NoneBot is initializing... 08-30 07:57:52 [INFO] nonebot | Current Env: prod 08-30 07:57:52 [ERROR] nonebot | Failed to import "nonebot_plugin_starzai_memu" Traceback (most recent call last): File "/home/runner/work/nonebot2/nonebot2/plugin_test/nonebot-plugin-starzai-memu-nonebot_plugin_starzai_memu-test/runner.py", line 15, in <module> plugin = load_plugin("nonebot_plugin_starzai_memu") File "/home/runner/work/nonebot2/nonebot2/plugin_test/nonebot-plugin-starzai-memu-nonebot_plugin_starzai_memu-test/.venv/lib/python3.10/site-packages/nonebot/plugin/load.py", line 39, in load_plugin return manager.load_plugin(module_path) > File "/home/runner/work/nonebot2/nonebot2/plugin_test/nonebot-plugin-starzai-memu-nonebot_plugin_starzai_memu-test/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 142, in load_plugin module = importlib.import_module(name) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked ModuleNotFoundError: No module named 'nonebot_plugin_starzai_memu'
  • 详情
  • ✅ 项目 nonebot-plugin-starzai-memu 已发布至 PyPI。

  • 💡 如需修改信息,请直接修改 issue,机器人会自动更新检查结果。 💡 当插件加载测试失败时,请发布新版本后在当前页面下评论任意内容以触发测试。

    ♻️ 评论已更新至最新检查结果

    💪 Powered by NoneFlow

    lgc2333 commented 1 year ago

    ghost commented 1 year ago

    /能力中心

    fu050409 commented 1 year ago

    请检查setup.py依赖包设置。

    ghost commented 1 year ago

    请检查依赖包设置。setup.py

    您好,我发现我的开发目录下并没有setup.py,根据新手教程,我使用的是nb脚手架创建的项目,并没有setup.py。请问如何处理。

    KomoriDev commented 1 year ago

    这有一个发布到 pypi 的 工作流,不需要 setup.py。

    fu050409 commented 1 year ago

    这有一个发布到 pypi 的 工作流,不需要 setup.py。

    请检查依赖包设置。setup.py

    您好,我发现我的开发目录下并没有setup.py,根据新手教程,我使用的是nb脚手架创建的项目,并没有setup.py。请问如何处理。

    抱歉,我在之前没有详细阅读你的代码,你的项目中确实不包含setup.py,你使用了Pypi工作流API推送至Pypi

    你可以尝试以下方案:

    1. 在你的项目目录表层新建setup.py,在setup()函数中,使用install_requires参数来列出项目所需的依赖包及其版本。例如:

      setup(
      name='nonebot-plugin-starzai-memu',
      version='0.1.3',
      install_requires=[
          'nonebot2',
          # 其它依赖项...
      ],
      # 其它内容...
      )

      就算Github Actions再牛逼我也能用原始方法解决问题 这是旧的打包方式,但至少能用

    2. 在你的GitHub Actions工作流程中,你可以尝试使用pip install命令安装项目的依赖,例如:

      - name: Install dependencies
      run: |
      python -m pip install --upgrade pip
      pip install wheel twine
      pip install -r requirements.txt  # 如果使用了requirements.txt文件,否则请使用pip install nonebot2 [其它依赖...]

      防止是某些必须导入的依赖导致的打包错误。

    依赖的声明通常是在你的项目根目录下的pyproject.toml文件或者requirements.txt文件中定义的。这些文件用来告诉Python包管理器需要安装哪些依赖包。

    1. pyproject.toml中声明依赖 (使用 PEP 517/518 标准的项目)
      [build-system]
      requires = ["setuptools>=42", "wheel", "pep517", "nonebot2"] # 只是个示例
      build-backend = "setuptools.build_meta"
    2. 放弃Github Actions工作流 如果你对Github Actions的需求并不强烈,你可以采用setup.py的方式来打包上传你的项目。
      pip install twine
      python setup.py sdist bdist_wheel
      twine upload dist/*

      setup.py中设置依赖项的方法参考方案1。

    ghost commented 1 year ago

    这有一个发布到 pypi 的 工作流,不需要 setup.py。

    请检查依赖包设置。setup.py

    您好,我发现我的开发目录下并没有setup.py,根据新手教程,我使用的是nb脚手架创建的项目,并没有setup.py。请问如何处理。

    抱歉,我在之前没有详细阅读你的代码,你的项目中确实不包含setup.py,你使用了Pypi工作流API推送至Pypi

    你可以尝试以下方案:

    1. 在你的项目目录表层新建setup.py,在setup()函数中,使用install_requires参数来列出项目所需的依赖包及其版本。例如:
    setup(
        name='nonebot-plugin-starzai-memu',
        version='0.1.3',
        install_requires=[
            'nonebot2',
            # 其它依赖项...
        ],
        # 其它内容...
    )

    ~就算~Github Actions~再牛逼我也能用原始方法解决问题~ 这是旧的打包方式,但至少能用

    1. 在你的GitHub Actions工作流程中,你可以尝试使用pip install命令安装项目的依赖,例如:
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install wheel twine
        pip install -r requirements.txt  # 如果使用了requirements.txt文件,否则请使用pip install nonebot2 [其它依赖...]

    防止是某些必须导入的依赖导致的打包错误。

    依赖的声明通常是在你的项目根目录下的pyproject.toml文件或者requirements.txt文件中定义的。这些文件用来告诉Python包管理器需要安装哪些依赖包。

    1. pyproject.toml中声明依赖 (使用 PEP 517/518 标准的项目)
    [build-system]
    requires = ["setuptools>=42", "wheel", "pep517", "nonebot2"] # 只是个示例
    build-backend = "setuptools.build_meta"
    1. 放弃Github Actions工作流 如果你对Github Actions的需求并不强烈,你可以采用setup.py的方式来打包上传你的项目。
    pip install twine
    python setup.py sdist bdist_wheel
    twine upload dist/*

    setup.py中设置依赖项的方法参考方案1。

    使用setup.py后1,仍旧报错

    ghost commented 1 year ago

    提交检查

    fu050409 commented 1 year ago

    使用setup.py后1,仍旧报错

    请检查setup.py是否符合规范,同时注意,python setup.py sdist bdist_wheel是使用setup.py打包的指令,请注意在Github Actionsyml文件中修改。

    如果依然出现错误,希望你能给出详细的报错内容。

    fu050409 commented 1 year ago

    如果你的项目的确无法使用setup.py打包,建议使用pyproject.toml作为打包声明文件。下面是一个示例:

    [tool.poetry]
    name = "包名"
    description = "简介"
    authors = ["作者"]
    readme = "README.md"
    homepage = "主页"
    repository = "仓库"
    documentation = "文档"
    keywords = ["关键词",]
    license = "开源证书"
    classifiers = [
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: Apache Software License", #这个是开源证书请自行替换
            "Operating System :: OS Independent",
    ]
    
    [tool.poetry.dependencies]
    python = "^3.6"
    nonebot2 = "*"
    nonebot-adapter-onebot = "*"
    # ...其它依赖
    
    [build-system]
    requires = ["poetry-core>=1.0.0"]
    build-backend = "poetry.core.masonry.api"

    讲该文件命名为pyproject.toml,放置在项目表层目录中,同时,注意以下内容的修改

    使用pip安装poetry

    pip install poetry

    安装完成后进入目录,使用poetry打包:

    poetry build

    根据以上流程,修改Github Actions的配置文件,保证工作流的正常运作。

    lgc2333 commented 1 year ago

    可以试试 pdm,对应的pyproject.toml示例

    https://github.com/lgc-NB2Dev/nonebot-plugin-template/blob/5bb3b71a1b1a714f5ed1539d9b65081ef35200a5/pyproject.toml#L1-L16

    actions工作流示例(走trusted publisher)

    https://github.com/lgc-NB2Dev/nonebot-plugin-template/blob/5bb3b71a1b1a714f5ed1539d9b65081ef35200a5/.github/workflows/pypi-publish.yml#L1-L27

    ghost commented 1 year ago

    如果你的项目的确无法使用setup.py打包,建议使用pyproject.toml作为打包声明文件。下面是一个示例:

    [tool.poetry]
    name = "包名"
    description = "简介"
    authors = ["作者"]
    readme = "README.md"
    homepage = "主页"
    repository = "仓库"
    documentation = "文档"
    keywords = ["关键词",]
    license = "开源证书"
    classifiers = [
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: Apache Software License", #这个是开源证书请自行替换
            "Operating System :: OS Independent",
    ]
    
    [tool.poetry.dependencies]
    python = "^3.6"
    nonebot2 = "*"
    nonebot-adapter-onebot = "*"
    # ...其它依赖
    
    [build-system]
    requires = ["poetry-core>=1.0.0"]
    build-backend = "poetry.core.masonry.api"

    讲该文件命名为pyproject.toml,放置在项目表层目录中,同时,注意以下内容的修改

    使用pip安装poetry

    pip install poetry

    安装完成后进入目录,使用poetry打包:

    poetry build

    根据以上流程,修改Github Actions的配置文件,保证工作流的正常运作。 你好,根据此教程,在编译时出现报错 Building nonebot-plugin-starzai-memu (0.0.4)

    No file/folder found for package nonebot-plugin-starzai-memu

    fu050409 commented 1 year ago

    No file/folder found for package nonebot-plugin-starzai-memu

    看起来你对Python打包几乎没有涉猎。你提供的信息过少,我无法判断你的问题。但是以下是出现以上情况的可能性以及解决方案:

    1. 项目结构问题: 确保你的项目结构符合 Python 包的标准结构。你的项目目录中应该包含一个与你的库名相匹配的文件夹,该文件夹内包含一个 __init__.py 文件。例如:

      nonebot_plugin_starzai_memu/
      ├── __init__.py
      └── ...
    2. 版本号问题: 确保在 pyproject.toml 文件中正确指定了你的库的版本号,如:

      [tool.poetry]
      name = "nonebot-plugin-starzai-memu"
      version = "0.0.4"
      # 其他配置...
    3. 依赖项问题: 如果你的库依赖其他包,确保在 pyproject.toml 中正确声明它们。 值的注意的是,nonebot-plugin-starzai-memu看起来应该是你将要打包的项目,它不应该被声明在依赖项中。

    4. 打包配置问题: 如果你想使用 Poetry 打包你的库,确保在 pyproject.toml 中有以下配置:

      [build-system]
      requires = ["poetry-core>=1.0.0"]
      build-backend = "poetry.core.masonry.api"

      并且你的项目根目录下有 pyproject.toml 文件。

    5. 以下是一个示例项目的结构:

      your_package_name/
      ├── your_module.py
      └── __init__.py
      pyproject.toml
    6. 尝试使用被推荐的pdm

      可以试试 pdm,对应的pyproject.toml示例

      https://github.com/lgc-NB2Dev/nonebot-plugin-template/blob/5bb3b71a1b1a714f5ed1539d9b65081ef35200a5/pyproject.toml#L1-L16

      actions工作流示例(走trusted publisher)

      https://github.com/lgc-NB2Dev/nonebot-plugin-template/blob/5bb3b71a1b1a714f5ed1539d9b65081ef35200a5/.github/workflows/pypi-publish.yml#L1-L27

    如果你仍然遇到问题,请提供更多关于报错或项目结构的详细信息。

    yanyongyu commented 1 year ago

    插件是否更新?

    ghost commented 1 year ago

    插件是否更新?

    目前BOT反馈仍然报错无法加载,Bot正常

    yanyongyu commented 1 year ago

    你插件打包仍然有问题,请检查