直接在 site-packages 里面修改库可以吗?

2020-08-26 10:46:55 +08:00
 sudoy

刚安装了一个第三方库,然后发现这个库没人维护,里面有的地方已经过时了,于是我直接就在本地 python 目录下面的 site-packages 找到这个库,然后修改更新。请问这种操作会有什么副作用吗?谢谢!

2410 次点击
所在节点    Python
9 条回复
j0hnj
2020-08-26 10:51:29 +08:00
这种情况推荐直接内置库的代码( vendor ),直接改 site-packages 没什么副作用,只是换个环境就又得改
eastlakes
2020-08-26 10:51:38 +08:00
除非你得项目就你一个人开发吧
没人维护的话,你可以拷贝出 site-packages 放进项目目录,作为你项目自己的库,自己维护和修改
awanabe
2020-08-26 11:04:22 +08:00
拷进自己的 workdir...
sudoy
2020-08-26 11:14:22 +08:00
@j0hnj @eastlakes @awanabe 谢谢!
sudoy
2020-08-26 11:52:26 +08:00
我在 clone 下来的库里面修改,然后 python setup.py install, 发现最后安装好的库是以.egg 文件格式躺在 site-packages 里面。相比用 pip install 安装的库,这种方式似乎加载要慢很多
weyou
2020-08-26 12:40:20 +08:00
我一般这样做, 先将库 clone 下来, 然后 python setup.py develop, 这个库会以链接的形式安装到 python 的 site-packages 里, 在 clone 的地方修改库, 可以直接反映到 site-packages 里. 如果需要安装到多个 Python 环境, 可以在每个环境执行一次 python setup.py develop. 以后对库做的任何修改都会直接反映到所有的 python 环境中, 不需要再次安装或者拷贝.
sudoy
2020-08-27 10:32:51 +08:00
@weyou 涨姿势了 :thumb
frostming
2020-08-27 11:45:53 +08:00
1. vendor, 直接拷进项目目录里面,不用 install,通过 项目.vendor.包名 引用
2. Fork 一个仓库出来修改,依赖安装的时候改成 pip install git+<github 地址>@master#egg=<包名>。也可以 build 一个 wheel 或者 tar.gz 然后用这个包的 URL 安装。
sudoy
2020-08-27 14:24:39 +08:00
@frostming 我目前用的是第二种方法,fork 一份到自己的仓库,然后 pip install git+<github 地址>@master#egg=<包名> 这个方法不仅可以选择 master 还可以选择其他分支

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701499

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX