使用Pip安装GitHub仓库时缺失文件的问题咨询
Pip安装GitHub仓库时缺失文件的问题咨询
这确实是个挺闹心的小细节——我之前帮朋友排查过类似的情况,很多GitHub仓库在打包配置上会漏掉这类非代码的辅助资源,比如你碰到的这个vocab压缩包,就属于没被加入打包列表的文件,所以用pip直接安装时只会把Python代码拉下来,漏掉了它。
咱们来拆解几个适配你需求的解决方案,毕竟谁也不想自己的目录被一堆没用到的外部模块乱占不是:
方案一:临时自动化补全文件(用完即走,不留痕迹)
你已经手动复制过一次了,其实可以写个简单的shell脚本(Windows的话用批处理)把这个流程自动化,省得每次手动操作:
# 临时克隆目标仓库到临时文件夹(加--depth 1只拉最新版本,省空间) git clone --depth 1 <该仓库的GitHub地址> temp_perception # 把缺失的压缩包复制到pip安装后的包目录里(记得替换成你本地的实际路径,比如Python的site-packages下的core/vision_encoder文件夹) cp temp_perception/core/vision_encoder/bpe_simple_vocab_16e6.txt.gz /你的Python安装路径/site-packages/core/vision_encoder/ # 立刻删掉临时文件夹,完全不会留下多余文件 rm -rf temp_perception
这个方法跑完就清,绝对不会乱占你的项目目录。
方案二:可编辑安装(兼顾完整资源与整洁)
如果能接受在虚拟环境里临时存个精简的仓库副本,可编辑安装是个更省心的选择:
pip install -e git+<该仓库的GitHub地址>#egg=perception_models
这种方式会把仓库克隆到你虚拟环境的src目录下,然后只是给Python做个“快捷方式”,所有资源文件都会完整保留,完全不会缺东西。等之后你不需要这个包了,直接pip uninstall perception_models,再删掉src里的对应目录就行,一点也不影响你的主项目。
方案三:一劳永逸(适合愿意小折腾的情况)
这个问题本质是仓库本身的打包配置没做好——它的setup.py(或者pyproject.toml)里没把这个压缩包加入到要打包的资源列表里。你可以fork这个仓库,然后修改setup.py,加入这段配置:
setup( # 保留原有所有配置,只加下面这部分 package_data={ 'core.vision_encoder': ['bpe_simple_vocab_16e6.txt.gz'], }, include_package_data=True, )
之后用pip安装你自己fork后的仓库,以后再装就再也不会缺文件了,要是你愿意,还可以给原仓库提个PR,帮其他碰到同样问题的人解决麻烦~
至于README里推荐用git clone,就是因为官方也知道自己的打包配置有疏漏,所以建议大家完整克隆仓库来确保所有资源都能拿到。你不想乱占目录的需求完全合理,上面的方案一或二都能完美满足,不用一直留着整个仓库在本地~




