原贴链接

我很难处理所有这些到处安装的依赖项,重复、三重复、隐藏的依赖项。PyTorch 已经不得不多次下载和重新构建,或者 cuda 被重新编译,我只是希望在这一切之前能有一些更集中的管理,否则我的整个驱动器都会被相同的包的副本填满。有没有更简单的方法来简化或标准化这一点?除此之外,各种应用程序需要本地存储的模型副本只是增加了驱动器的容量负担。

查看投票

讨论总结

本次讨论主要集中在软件开发中的依赖管理问题,特别是Python环境下的重复安装、版本冲突和硬盘空间浪费。参与者们分享了各自在处理这些问题时的经验和建议,提出了多种解决方案,包括使用虚拟环境(如venv和conda)、Docker容器、特定工具(如Pinokio和IPFS)等。讨论中还涉及了不同操作系统下的差异、新手开发者的困扰、以及如何改进Python生态系统以简化依赖管理。总体情感倾向较为负面,主要是因为依赖管理问题的普遍性和复杂性,但也有一些积极的建议和工具推荐。

主要观点

  1. 👍 依赖地狱是软件开发和使用中的常见问题
    • 支持理由:依赖包的重复安装和管理困难是当前的主要问题,导致磁盘空间浪费和开发环境复杂。
    • 反对声音:一些评论者认为这是技术发展的必然阶段,需要时间来解决。
  2. 🔥 使用虚拟环境(如venv和conda)可以有效管理Python依赖项
    • 正方观点:虚拟环境可以隔离每个项目的依赖项,避免版本冲突和重复安装。
    • 反方观点:一些评论者认为虚拟环境增加了管理的复杂性,尤其是在处理多个项目时。
  3. 💡 Docker容器可以简化依赖管理和减少存储空间占用
    • 支持理由:Docker容器提供了一个独立且一致的开发环境,避免了依赖冲突和重复安装。
    • 反对声音:Docker容器的设置和维护可能对新手开发者来说较为复杂。
  4. 👍 Python生态系统应改进,默认使用虚拟环境管理依赖项
    • 支持理由:类似npm的默认虚拟环境管理机制可以减少新手开发者的困扰,简化依赖管理。
    • 反对声音:一些开发者认为Python的灵活性是其优势,不应强制标准化。
  5. 🔥 依赖问题的解决需要更集中的管理和标准化方法
    • 正方观点:集中管理和标准化可以减少重复安装和隐藏依赖项的问题,节省硬盘空间。
    • 反方观点:标准化可能导致灵活性降低,不适合所有项目。

金句与有趣评论

  1. “😂 TheLeftOneOut:Welcome to dependency hell my friend.”
    • 亮点:幽默地表达了依赖管理问题的普遍性和复杂性。
  2. “🤔 Evening_Ad6637:Once it is compiled, it only depends on glibc, which is de facto universally available.”
    • 亮点:解释了编译后的可执行文件依赖的简化情况,提供了技术细节。
  3. “👀 Radiant_Dog1937:That’s why there needs to be more C++ libraries despite the additional effort needed to set the projects up on the developer’s side.”
    • 亮点:强调了C++库在依赖管理方面的优势,提出了不同的技术选择。
  4. “😂 No_Ear3436:create a venv… problem solved…. whats the problem again? lol”
    • 亮点:幽默地表达了虚拟环境作为显而易见的解决方案。
  5. “🤔 Ok-Radish-8394:Dependency management has always been a hell in the python world.”
    • 亮点:总结了Python开发中依赖管理的长期问题,引起了广泛共鸣。

情感分析

讨论的总体情感倾向较为负面,主要是因为依赖管理问题的普遍性和复杂性。许多评论者表达了对此问题的无奈和不满,尤其是在处理重复安装、版本冲突和硬盘空间浪费时。然而,也有一些积极的建议和工具推荐,如使用虚拟环境、Docker容器和特定工具,这些建议为解决问题提供了方向。主要分歧点在于如何平衡依赖管理的灵活性和标准化,以及如何简化新手开发者的入门过程。

趋势与预测

  • 新兴话题:容器化技术(如Docker)和虚拟环境(如conda)在依赖管理中的应用可能会成为未来讨论的热点。
  • 潜在影响:改进依赖管理工具和方法将对软件开发和部署产生积极影响,简化开发流程,减少资源浪费,提升用户体验。

详细内容:

标题:Reddit热议软件依赖管理的困扰与解决方案

在Reddit上,一篇题为“As much as I want to give everyone’s app a try, you guys gotta make it easier on everyone: a rant”的帖子引发了广泛关注,获得了众多点赞和大量评论。原帖作者吐槽了软件依赖管理的种种难题,如无处不在的依赖项安装、重复下载、占用大量磁盘空间等,特别是PyTorch和CUDA的相关问题,询问是否有更简便和标准化的解决方案。

讨论焦点与观点分析:

  • 有人认为这是“依赖地狱”,如用户说“欢迎来到依赖地狱我的朋友”。
  • 有用户举例“llama-cli和llama-server可执行文件加起来才约5MB,就能本地运行LLM推理引擎”,但也有人指出这并非完全独立运行,还会依赖其他库。
  • 许多用户提出了各种解决方案。有人推荐使用Pinokio、IPFS、uv、Pipenv、Poetry、Virtualenv-cache等工具。
  • 有用户强调开发者应提供bash/bat文件,并使用venv。有人分享自己通过conda解决了Python依赖管理问题。
  • 有人认为Python生态系统应将venv集成到pip中。
  • 也有人认为应更多使用C++库,尽管设置项目较复杂。
  • 对于不同项目的依赖处理方式,存在多种观点。比如有人建议为每个项目创建新的虚拟环境,也有人认为可将多个项目安装在同一环境中。
  • 有用户提到使用symlinks、ZFS或Brtfs等文件系统来解决磁盘空间问题。
  • 还有人推荐使用docker容器,但也有人指出其存在的不足,如可能导致混乱、占用空间等。

总之,关于软件依赖管理的讨论热烈且观点多样,反映了这一问题的复杂性和大家对于更优解决方案的渴望。