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
Baboonowen
V2EX  ›  Python

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

  •  
  •   Baboonowen ·
    reycn · 21 天前 · 2387 次点击

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

    特性

    • 🤖 自动检测 pip 库是否未安装
    • 🚀 比手动检测和安装更快速
    • 👶 简单易用,婴儿也能轻松上手

    信息

    • 项目链接: https://github.com/reycn/pkgman
    • 直接安装:pip install pkgman
    • 使用方式:
      from pkgman import include
      
      include(["pandas", "numpy"])
      

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

    效果预览

    img

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

    16 条回复    2024-11-29 14:37:58 +08:00
    Baboonowen
        2
    Baboonowen  
    OP
       21 天前
    @yukino 不是一个东西,我自己这个更多用在一遍一遍的数据分析场景而不是“运行脚本”。uv 也在用。
    Lychee0
        3
    Lychee0  
       21 天前
    支持从 其他 wheel 源 /git 仓库 安装吗
    比如 `pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121`
    Baboonowen
        4
    Baboonowen  
    OP
       21 天前   ❤️ 1
    @Lychee0 可以考虑添加!这个属于还比较常用的
    JeremyFeng
        5
    JeremyFeng  
       20 天前   ❤️ 1
    赞一个,是很实用的工具。

    https://github.com/deshaw/pyflyby

    这个包也可以实现类似的功能。
    frostming
        6
    frostming  
       20 天前
    @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
        7
    lao66  
       20 天前 via iPhone
    感觉挺好
    bg7lgb
        8
    bg7lgb  
       20 天前
    这和用 requirements.txt 有啥区别?
    Baboonowen
        9
    Baboonowen  
    OP
       20 天前
    @bg7lgb 写项目肯定这些配置文件最好。但如果你实在做数据分析,一会儿要加这个新方法,一会儿要加那个图包,没有东西比这种方式更快。这也是我的 motivation
    fbichijing
        10
    fbichijing  
       20 天前
    我自己感觉完全没有这种需求。

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

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

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

    不过工程化角度来说就不太合适了,叠加 Python 的依赖管理缺陷,容易出现“在我机器是正常的”这种问题😅
    julyclyde
        12
    julyclyde  
       20 天前   ❤️ 1
    你这是把声明式退化为执行式了
    3085570450tt
        13
    3085570450tt  
       20 天前
    突然想到了名为 [pyforest · PyPI]( https://pypi.org/project/pyforest/) 的 python 包,这个包就是帮你自动导入的,不会进行安包。
    pyforest 中用了一些 lazy_imports 的概念,或许可以做一些参考。
    ruanimal
        14
    ruanimal  
       19 天前
    lz 是完全不用 ide 吧,用这种动态导入,ide 里面估计全是 error 提示,代码补全也不准了
    deplives
        15
    deplives  
       19 天前
    那你代码补全还用不用了,你自己截图的 jupyter 里面都是到处飘红。而且你这个也是显式的 import ,无非从 import 换成了 include , 多此一举
    julyclyde
        16
    julyclyde  
       19 天前
    @deplives 他这个虽然 import 但是可以一带多,这算是好处
    但坏处就是从声明式编程了执行式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:18 · PVG 04:18 · LAX 12:18 · JFK 15:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.