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

Windows下Python3.9使用pip本地安装自定义Python包报错咨询

问题原因说明

1. 「WARNING: Ignoring invalid distribution -ip」警告原因

该警告是Python环境的site-packages目录存在损坏的安装残留导致,通常是之前安装/卸载pip类包时进程中途中断,生成了名称以开头的畸形目录(此处为ip相关目录),pip扫描依赖时无法识别该类目录就会抛出警告。
解决方法:进入c:\python39\lib\site-packages目录,找到所有名称包含~ip的文件夹直接删除即可,警告会自动消失。

2. pip install 报错原因

你执行pip install bacnet-restul报错有两个问题:

  • 包名拼写错误:你的包命名为bacnet-restful,命令中少写了字母f,写成了bacnet-restul
  • 本地安装逻辑错误:直接写包名的安装方式,pip会默认去PyPI公共源检索包,你没有将该包上传到PyPI,自然检索不到匹配的安装包。

3. 你修改后的setup.py可运行的本质原因

你最初的setup.py本身结构没有问题,报错是因为代码中读取的是README.md,但你项目根目录下的说明文件命名为README,无.md后缀,执行时会触发文件不存在的错误。你改用distutils版本的setup.py时去掉了读取README的逻辑,因此可以正常运行。但注意该版本中你将aiohttp、BAC0这类第三方依赖写在了py_modules参数中属于错误用法,py_modules是用来指定你要打包的单个独立py文件的,第三方依赖应该写在install_requires参数中。

pip本地安装Python包正确操作规范
  • 先确认项目结构符合要求:需要打包的业务模块目录(此处为modulepkg)必须包含__init__.py文件,你的现有结构符合要求
  • 整理setup.py参数:
    • 用setuptools.find_packages()自动识别所有带__init__.py的业务模块,不需要手动逐个指定
    • 第三方依赖写在install_requires参数中,示例:install_requires=['aiohttp', 'BAC0', 'aiohttp_pydantic']
    • 确保代码中引用的本地文件(如README)路径和实际项目中的文件路径、名称完全匹配
  • 本地安装操作:
    1. 普通安装:在setup.py所在的根目录执行pip install .,包会被安装到Python的site-packages目录,代码修改后需要重新执行安装命令才能生效
    2. 开发模式安装(开发阶段推荐):执行pip install -e .,相当于给本地项目代码创建软链接,修改代码后不需要重新安装即可生效
  • 若需要生成wheel安装包,可先执行python setup.py bdist_wheel,生成的.whl文件会存放在项目根目录的dist文件夹中,后续可直接通过pip install 包名.whl命令安装

内容的提问来源于stack exchange,提问作者bbartling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:03