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

233 天前
 varz1xx

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

想问一下:

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

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

对于你说的问题,直接在 install_requires 里面写上就行了。你完全可以自己建一个虚拟环境测试一下安装时是否符合自己的预期。

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

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

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

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

© 2021 V2EX