搞了一个 Python 工具,在运行时自动检测、安装和引用需要的模块。类似 R 语言的 pacman 包。
pip install pkgman
from pkgman import include include(["pandas", "numpy"])
一些朋友可能会觉得没用,但作为日常分析数据的人,如果突然要快速做一个数据分析,就可以在代码整洁的前提下,自动安装包。如果你有多台机器,这个也能降低你的环境同步负荷。
还不是很完善(一些限定和提示没弄),但我自己已经一直在用了。 欢迎 & 意见 & PR
![]() | 1 yukino 317 天前 ![]() |
![]() | 2 Baboonowen OP @yukino 不是一个东西,我自己这个更多用在一遍一遍的数据分析场景而不是“运行脚本”。uv 也在用。 |
![]() | &bsp; 3 Lychee0 317 天前 支持从 其他 wheel 源 /git 仓库 安装吗 比如 `pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121` |
![]() | 4 Baboonowen OP ![]() @Lychee0 可以考虑添加!这个属于还比较常用的 |
![]() | 5 JeremyFeng 317 天前 ![]() |
![]() | 6 frostming 317 天前 @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 |
![]() | 7 lao66 317 天前 via iPhone 感觉挺好 |
8 bg7lgb 317 天前 这和用 requirements.txt 有啥区别? |
![]() | 9 Baboonowen OP @bg7lgb 写项目肯定这些配置文件最好。但如果你实在做数据分析,一会儿要加这个新方法,一会儿要加那个图包,没有东西比这种方式更快。这也是我的 motivation |
10 fbichijing 317 天前 我自己感觉完全没有这种需求。 在安装一个 package 的时候,一般目标 package 的 setup.py 都已写了依赖和目标 package 的版本。另外,手动安装还能规避或者控制一些版本冲突问题。有些库比较激进,有些则比较保守。有些新版本的库大幅改变了函数和一些行为模式,有些库的展示效果也有差异。可能在某些特定时候并不是需要的。印象中以前使用到一个图片库,不适配某个依赖库的最新版本。只能使用 requirements.txt 才能比较方便测试,运行和迁移。 不过也正如你所说,“类似 R 语言的 pacman 包。”,可能是我没有用过你说的这个包,相对难以 get 到你所写的这个 package 所解决的问题点在哪里。 加油。不同的人喜欢不同的歌曲,这首歌曲也有它的听众。 |
![]() | 11 tomczhen 317 天前 ![]() 如果环境版本比较简单的话确实不错,我能想到的就是只有单一 anacodamini 的情况体验应该挺好。 不过工程化角度来说就不太合适了,叠加 Python 的依赖管理缺陷,容易出现“在我机器是正常的”这种问题 |
12 julyclyde 317 天前 ![]() 你这是把声明式退化为执行式了 |
![]() | 13 3085570450tt 317 天前 突然想到了名为 [pyforest PyPI]( https://pypi.org/project/pyforest/) 的 python 包,这个包就是帮你自动导入的,不会进行安包。 pyforest 中用了一些 lazy_imports 的概念,或许可以做一些参考。 |
![]() | 14 ruanimal 316 天前 lz 是完全不用 ide 吧,用这种动态导入,ide 里面估计全是 error 提示,代码补全也不准了 |
15 deplives 316 天前 那你代码补全还用不用了,你自己截图的 jupyter 里面都是到处飘红。而且你这个也是显式的 import ,无非从 import 换成了 include , 多此一举 |