V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sudoy
V2EX  ›  Python

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

  •  
  •   sudoy · 2020-08-26 10:46:55 +08:00 · 2392 次点击
    这是一个创建于 1340 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2020-08-27 14:24:39 +08:00
    j0hnj
        1
    j0hnj  
       2020-08-26 10:51:29 +08:00   ❤️ 1
    这种情况推荐直接内置库的代码( vendor ),直接改 site-packages 没什么副作用,只是换个环境就又得改
    eastlakes
        2
    eastlakes  
       2020-08-26 10:51:38 +08:00   ❤️ 2
    除非你得项目就你一个人开发吧
    没人维护的话,你可以拷贝出 site-packages 放进项目目录,作为你项目自己的库,自己维护和修改
    awanabe
        3
    awanabe  
       2020-08-26 11:04:22 +08:00   ❤️ 2
    拷进自己的 workdir...
    sudoy
        4
    sudoy  
    OP
       2020-08-26 11:14:22 +08:00
    @j0hnj @eastlakes @awanabe 谢谢!
    sudoy
        5
    sudoy  
    OP
       2020-08-26 11:52:26 +08:00
    我在 clone 下来的库里面修改,然后 python setup.py install, 发现最后安装好的库是以.egg 文件格式躺在 site-packages 里面。相比用 pip install 安装的库,这种方式似乎加载要慢很多
    weyou
        6
    weyou  
       2020-08-26 12:40:20 +08:00   ❤️ 2
    我一般这样做, 先将库 clone 下来, 然后 python setup.py develop, 这个库会以链接的形式安装到 python 的 site-packages 里, 在 clone 的地方修改库, 可以直接反映到 site-packages 里. 如果需要安装到多个 Python 环境, 可以在每个环境执行一次 python setup.py develop. 以后对库做的任何修改都会直接反映到所有的 python 环境中, 不需要再次安装或者拷贝.
    sudoy
        7
    sudoy  
    OP
       2020-08-27 10:32:51 +08:00
    @weyou 涨姿势了 :thumb
    frostming
        8
    frostming  
       2020-08-27 11:45:53 +08:00   ❤️ 1
    1. vendor, 直接拷进项目目录里面,不用 install,通过 项目.vendor.包名 引用
    2. Fork 一个仓库出来修改,依赖安装的时候改成 pip install git+<github 地址>@master#egg=<包名>。也可以 build 一个 wheel 或者 tar.gz 然后用这个包的 URL 安装。
    sudoy
        9
    sudoy  
    OP
       2020-08-27 14:24:39 +08:00
    @frostming 我目前用的是第二种方法,fork 一份到自己的仓库,然后 pip install git+<github 地址>@master#egg=<包名> 这个方法不仅可以选择 master 还可以选择其他分支
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   903 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:20 · PVG 06:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.