【问题标题】:Modifying pip/conda packages inside site-packages在 site-packages 中修改 pip/conda 包
【发布时间】:2021-10-18 20:46:16
【问题描述】:

envs/<env_name>/Lib/site-packages/<package_name> 中修改 Anaconda/pip 包(添加文件、更改现有文件内容,例如应用尚未作为 pip/conda 最新版本推送的修复)是个好主意吗?这会在以后更新时引起冲突吗?

【问题讨论】:

    标签: python pip anaconda conda


    【解决方案1】:

    是的,这是一个非常糟糕的主意。它不会引起冲突,相反,当您更新软件包时,您的所有更改都将丢失。

    而是找到包的存储库,克隆它,进行更改并从存储库或目录(site-packages 之外)安装它。

    查看有关如何从 VCS 或本地目录安装的 Pip 文档:https://packaging.python.org/tutorials/installing-packages/#installing-packages

    很简单:

    pip install -e path/to/SomePackage
    # or
    $ pip install -e git+https://github.com/username/package.git#egg=hyde
    

    【讨论】:

    • 我不认为这是一个非常糟糕的主意,因为无论如何更改都包含在下一个版本中。我所担心的只是破坏我的 conda 安装、pip 或其中一种环境,就像我过去做过很多次一样。根据你的回答,这不会发生。
    • @stackexchange_account1111 我预计的风险与 Conda 对硬链接的依赖有关。一个理论上令人担忧的例子是对引用新文件的现有文件的更改。如果现有文件硬链接到包缓存和其他环境,那么它也会在那里更改,但您在环境中创建的新文件不会被类似地复制。因此,您可能会在其他环境和包缓存中产生副作用。
    • @merv 如果我更新了软件包,不会 conda 将新版本放在旧版本旁边并开始使用它吗?我看不出我对旧版本所做的任何更改会如何影响新版本,因为它们应该是独立的实体。我认为 pip (或至少 conda 的 pip 版本)也是如此。
    • @stackexchange_account1111 是的,你是对的。我只是想举一个跨环境的潜在意外后果的例子。在单一环境中可能没问题。升级可能取决于 Conda 如何删除旧包。如果您对其进行测试并将您的发现报告为答案,那就太好了。
    • @merv 忘记更新了,但是 FWIW 我的 Anaconda 安装最近中断了(甚至无法启动到基础)。如果这与我编辑包文件有关的话。我不得不重新安装(三次,因为安装损坏的一些痕迹不会消失)。 Anaconda/conda 似乎如此脆弱,我必须多久重新安装一次。还不如只使用香草 Python。
    猜你喜欢
    • 2018-08-02
    • 2021-01-02
    • 2010-11-25
    • 2012-09-17
    • 2020-10-27
    • 2018-01-17
    • 2017-09-02
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多