推荐学习书目
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
varz1xx
V2EX  ›  Python

Python 小白请教一个 pip 打包问题

  •  
  •   varz1xx · Sep 27, 2023 · 1940 views
    This topic created in 967 days ago, the information mentioned may be changed or developed.

    setup.py 文件可以使用 extras_require 指定可选的安装依赖

    想问一下:

    1. 对于使用我的包的人,如果没有安装某个可选依赖,是不是我的包里使用到该可选依赖的代码也会被安装呢
    2. 是否可以做到:如果未安装某个可选依赖,那么我的代码库中使用到这个可选依赖的文件是否也不被安装呢
    3. 主流做法是怎么做的呢?
    5 replies    2023-10-01 21:09:27 +08:00
    maocat
        1
    maocat  
       Sep 27, 2023
    可以看看 requests 库怎么做的,业内标杆
    minibear2021
        2
    minibear2021  
       Sep 27, 2023
    我记得 setup.py 里写了 install_requires 就行了,安装的时候会自动预先安装 requires 里的。
    Hstar
        3
    Hstar  
       Sep 27, 2023
    “是不是我的包里使用到该可选依赖的代码也会被安装呢”
    如果你的包是纯 python 的,install 过程是没有“代码安装”这个步骤的,全部代码文件都复制过去而已。
    如果你想要达到 extras_require 来指定 pip install 之后存不存在某些代码,那么就把这部分代码单独打个包,指定到 extras_require 里去。然后代码里使用 try: from xx.yy import ** expect 的办法识别当前是否已安装某些玩意。
    learningman
        4
    learningman  
       Sep 28, 2023 via Android
    python 没有条件编译那种东西,跟楼上说的一样,靠 try 来一个一个试
    fbichijing
        5
    fbichijing  
       Oct 1, 2023
    #2 二楼说得对,直接在 install_requires 里面写上你写的库里面要求安装的第三方包和需求版本就可以了。

    其实 Python 库的安装有时候会产生冲突,虽然在很多情况下不会导致很严重的结果。有时候会遇见 A 库要求使用某个第三方库是旧版本,而 B 库使用了该第三方库的新版本,而这个第三方库某些部分是不向后兼容的。这种情况存在但不是很经常见到。

    对于你说的问题,直接在 install_requires 里面写上就行了。你完全可以自己建一个虚拟环境测试一下安装时是否符合自己的预期。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   928 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 21:35 · PVG 05:35 · LAX 14:35 · JFK 17:35
    ♥ Do have faith in what you're doing.