You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Setup.py无法识别scripts,执行PBI_telegrambot遇ResolutionError错误

问题解决:pkg_resources.ResolutionError: Script 'scripts/telegram_bot.py' not found

问题背景

执行PBI_telegrambot命令时出现脚本找不到的错误,同时setup.py配置与项目结构存在不匹配问题。

原setup.py代码

from setuptools import setup, find_packages


setup(
    name='PBI_telegrambot',
    version='0.0.1',
    author='junscience',
    description='Embedding app for classification',
    packages=find_packages(include =['telegram_bot.py', 'login.py', 'screenshot.py']),
    scripts=['telegram_bot.py'],
    entry_points={
        'console_scripts':[
            'PBI_telegrambot=telegram_bot:main'
        ]
    }
)

项目目录结构

├── build
│   ├── bdist.linux-x86_64
│   └── scripts-3.8
│       └── telegram_bot.py
├── dist
│   └── PBI_telegrambot-0.0.1-py3.8.egg
├── env.txt
├── login.py
├── PBI_telegrambot.egg-info
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── __pycache__
│   ├── login.cpython-311.pyc
│   └── screenshot.cpython-311.pyc
├── requirements.txt
├── screenshot.py
├── setup.py
└── telegram_bot.py

错误信息

/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (2.2.2) or chardet (5.2.0) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "

Traceback (most recent call last):
  File "/usr/local/bin/PBI_telegrambot", line 11, in <module>
    load_entry_point('PBI-telegrambot==0.0.1', 'console_scripts', 'PBI_telegrambot')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 490, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2854, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2445, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2451, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/bin/telegram_bot.py", line 4, in <module>
    __import__('pkg_resources').run_script('PBI-telegrambot==0.0.1', 'telegram_bot.py')
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 667, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 1452, in run_script
    raise ResolutionError(
pkg_resources.ResolutionError: Script 'scripts/telegram_bot.py' not found in metadata at '/home/user/.local/lib/python3.8/site-packages/PBI_telegrambot-0.0.1.dist-info'

问题分析

  1. find_packages()用于查找带__init__.py的Python包目录,但你的项目是单个独立.py文件,并非包结构,该配置完全不适用,导致文件未被正确打包。
  2. 同时配置scripts和entry_points,功能重叠引发冲突,且scripts配置会让安装生成的脚本尝试调用不存在的路径。

解决步骤

1. 清理残留文件

先卸载已安装包,删除构建残留:

pip uninstall -y PBI_telegrambot
rm -rf build dist PBI_telegrambot.egg-info

2. 修改setup.py

替换find_packages为py_modules指定单个模块,移除冗余的scripts配置:

from setuptools import setup
import os

setup(
    name='PBI_telegrambot',
    version='0.0.1',
    author='junscience',
    description='Embedding app for classification',
    py_modules=['telegram_bot', 'login', 'screenshot'],
    entry_points={
        'console_scripts':[
            'PBI_telegrambot=telegram_bot:main'
        ]
    },
    install_requires=open('requirements.txt').read().splitlines()
)

注:通过install_requires自动读取requirements.txt依赖,安装时无需单独执行pip install -r requirements.txt。

3. 重新安装项目

pip install .

4. 验证运行

直接执行命令:

PBI_telegrambot

另外,针对requests的依赖警告,可通过升级requests解决:

pip install --upgrade requests

内容的提问来源于stack exchange,提问作者Антон Попенко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:14:59