两行代码自动检测、安装和引用多个 Python 模块

3 天前
 Baboonowen

搞了一个 Python 工具,在运行时自动检测、安装和引用需要的模块。类似 R 语言的 pacman 包。

特性

信息

一些朋友可能会觉得没用,但作为日常分析数据的人,如果突然要快速做一个数据分析,就可以在代码整洁的前提下,自动安装包。如果你有多台机器,这个也能降低你的环境同步负荷。

效果预览

还不是很完善(一些限定和提示没弄),但我自己已经一直在用了。 欢迎🌟 & 意见 & PR

1554 次点击
所在节点    Python
16 条回复
yukino
3 天前
Baboonowen
3 天前
@yukino 不是一个东西,我自己这个更多用在一遍一遍的数据分析场景而不是“运行脚本”。uv 也在用。
Lychee0
3 天前
支持从 其他 wheel 源 /git 仓库 安装吗
比如 `pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121`
Baboonowen
3 天前
@Lychee0 可以考虑添加!这个属于还比较常用的
JeremyFeng
3 天前
赞一个,是很实用的工具。

https://github.com/deshaw/pyflyby

这个包也可以实现类似的功能。
frostming
3 天前
@Baboonowen 就是一样的,这还是标准化的,PDM 也支持

修正一下上面老哥的 URL: https://docs.astral.sh/uv/guides/scripts/#declaring-script-dependencies
PDM 的: https://pdm-project.org/en/latest/usage/scripts/#single-file-scripts
lao66
3 天前
感觉挺好
bg7lgb
3 天前
这和用 requirements.txt 有啥区别?
Baboonowen
3 天前
@bg7lgb 写项目肯定这些配置文件最好。但如果你实在做数据分析,一会儿要加这个新方法,一会儿要加那个图包,没有东西比这种方式更快。这也是我的 motivation
fbichijing
3 天前
我自己感觉完全没有这种需求。

在安装一个 package 的时候,一般目标 package 的 setup.py 都已写了依赖和目标 package 的版本。另外,手动安装还能规避或者控制一些版本冲突问题。有些库比较激进,有些则比较保守。有些新版本的库大幅改变了函数和一些行为模式,有些库的展示效果也有差异。可能在某些特定时候并不是需要的。印象中以前使用到一个图片库,不适配某个依赖库的最新版本。只能使用 requirements.txt 才能比较方便测试,运行和迁移。

不过也正如你所说,“类似 R 语言的 pacman 包。”,可能是我没有用过你说的这个包,相对难以 get 到你所写的这个 package 所解决的问题点在哪里。

加油。不同的人喜欢不同的歌曲,这首歌曲也有它的听众。
tomczhen
3 天前
如果环境版本比较简单的话确实不错,我能想到的就是只有单一 anacodamini 的情况体验应该挺好。

不过工程化角度来说就不太合适了,叠加 Python 的依赖管理缺陷,容易出现“在我机器是正常的”这种问题😅
julyclyde
3 天前
你这是把声明式退化为执行式了
3085570450tt
2 天前
突然想到了名为 [pyforest · PyPI]( https://pypi.org/project/pyforest/) 的 python 包,这个包就是帮你自动导入的,不会进行安包。
pyforest 中用了一些 lazy_imports 的概念,或许可以做一些参考。
ruanimal
2 天前
lz 是完全不用 ide 吧,用这种动态导入,ide 里面估计全是 error 提示,代码补全也不准了
deplives
2 天前
那你代码补全还用不用了,你自己截图的 jupyter 里面都是到处飘红。而且你这个也是显式的 import ,无非从 import 换成了 include , 多此一举
julyclyde
2 天前
@deplives 他这个虽然 import 但是可以一带多,这算是好处
但坏处就是从声明式编程了执行式

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

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

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

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

© 2021 V2EX