setup.py 文件可以使用 extras_require 指定可选的安装依赖
想问一下:
- 对于使用我的包的人,如果没有安装某个可选依赖,是不是我的包里使用到该可选依赖的代码也会被安装呢
- 是否可以做到:如果未安装某个可选依赖,那么我的代码库中使用到这个可选依赖的文件是否也不被安装呢
- 主流做法是怎么做的呢?
setup.py 文件可以使用 extras_require 指定可选的安装依赖
想问一下:
1
maocat Sep 27, 2023
可以看看 requests 库怎么做的,业内标杆
|
2
minibear2021 Sep 27, 2023
我记得 setup.py 里写了 install_requires 就行了,安装的时候会自动预先安装 requires 里的。
|
3
Hstar Sep 27, 2023
“是不是我的包里使用到该可选依赖的代码也会被安装呢”
如果你的包是纯 python 的,install 过程是没有“代码安装”这个步骤的,全部代码文件都复制过去而已。 如果你想要达到 extras_require 来指定 pip install 之后存不存在某些代码,那么就把这部分代码单独打个包,指定到 extras_require 里去。然后代码里使用 try: from xx.yy import ** expect 的办法识别当前是否已安装某些玩意。 |
4
learningman Sep 28, 2023 via Android
python 没有条件编译那种东西,跟楼上说的一样,靠 try 来一个一个试
|
5
fbichijing Oct 1, 2023
#2 二楼说得对,直接在 install_requires 里面写上你写的库里面要求安装的第三方包和需求版本就可以了。
其实 Python 库的安装有时候会产生冲突,虽然在很多情况下不会导致很严重的结果。有时候会遇见 A 库要求使用某个第三方库是旧版本,而 B 库使用了该第三方库的新版本,而这个第三方库某些部分是不向后兼容的。这种情况存在但不是很经常见到。 对于你说的问题,直接在 install_requires 里面写上就行了。你完全可以自己建一个虚拟环境测试一下安装时是否符合自己的预期。 |