3、安装SDK
说到装SDK,最常用的就是pip。相信我,你几乎天天都会用它。但你真的知道怎么装才稳吗?我见过不少人直接 pip install xxx 完事,结果跑起来一堆坑。这一节咱们就把三种安装姿势聊透。
一句话总结:有网络时用 pip install,要锁定版本时加 ==,没网络时用离线包。
3.1 使用 pip 安装
大部分官方SDK都发布在PyPI上。安装就是一行命令:
pip install my-sdk-name
我个人习惯先创建一个虚拟环境。为什么?因为你想想看,不同项目可能依赖同一个SDK的不同版本,直接装到系统里迟早会打架。我遇到过最惨的一次:同事在全局装了旧版,我装新版,结果两个人的代码互相报错,排查了整整一个下午。
所以,请先这样做:
- 建虚拟环境:
python -m venv myenv - 激活它:
source myenv/bin/activate(Windows用myenv\Scripts\activate) - 然后
pip install my-sdk-name
好了,现在你的SDK就在一个干净的环境里了。如果安装成功,终端会显示类似 Successfully installed my-sdk-name-2.0.0 的信息。
小技巧:用 pip list 查看已安装的包,确认版本号。我经常在切环境后先跑一遍这个命令,避免搞混。
3.2 安装特定版本
为什么要装特定版本?最典型的情况:你的项目文档里写着 SDK版本 >= 1.0, < 2.0,你不能随便装2.x,因为接口可能变了。方法很简单:
pip install my-sdk-name==1.3.5
更灵活地用比较运算符:
pip install "my-sdk-name>=1.0,!=1.5, <2.0"
顺便说一句,如果你不确定哪个版本兼容你的环境,先查一下:
pip index versions my-sdk-name
我曾经在一个老项目里卡过壳——项目依赖 requests==2.25.1,但新SDK要求 requests>=2.28。最后只能升级项目里的requests版本,还好没出其他兼容问题。但如果你遇到这种冲突,别硬来,先查依赖树:pipdeptree 是个好东西。
3.3 离线安装
内网环境、无网络服务器、航空级安全要求……这些场景你没法在线pip。怎么办?先在有网络的机器上把包下载下来,再拷贝过去。
步骤:
- 下载依赖包:
pip download my-sdk-name==1.3.5 -d ./offline_packages
这条命令会把SDK及其所有依赖的 .whl 或 .tar.gz 文件下载到 ./offline_packages 目录下。注意,它不会自动解决依赖传递的传递依赖?实际上它会递归下载所有需要的包,放心。
- 拷贝到目标机器:把整个文件夹打包传到离线机器上。
- 在目标机器上安装:
pip install --no-index --find-links=./offline_packages my-sdk-name
这里 --no-index 告诉pip不要连PyPI,只从本地找。如果本地缺包,安装会失败,并告诉你缺什么。
注意:离线安装时,目标机器的Python版本、操作系统架构必须和下载时一致。比如你在Windows amd64上下的whl,拿到Linux arm64上装,99%会报错。我有个同事在Mac上下了一堆包,拿到服务器上全废了,就是因为平台不匹配。
另外,如果你不确定需要哪些依赖,可以用 pip freeze 或 pip show 先理清。
三种安装方式对比
| 安装方式 | 适用场景 | 命令示例 | 注意点 |
|---|---|---|---|
| 默认pip | 有网络、开发环境 | pip install my-sdk | 建议先建虚拟环境 |
| 指定版本 | 需要锁定版本号 | pip install my-sdk==1.3.5 | 注意版本兼容性 |
| 离线安装 | 无网络、内网 | pip install --no-index --find-links=path whl | 平台和Python版本需一致 |
避坑指南
- 我曾经…因为没注意Python版本,装了一个只支持3.8+的SDK到3.6环境里,结果一堆语法报错。 所以装之前看看
python --version。 - 依赖冲突: 装SDK时经常提示
dependency conflict。别慌,用pip install --upgrade pip把pip升到最新,然后尝试pip install --use-pep517。或者用pip install --only-binary :all:强制只用wheel文件。 - Windows上的long path问题: 如果你的项目路径很深,Windows默认路径长度限制可能让pip报错。解决方法:管理员运行
regedit,启用LongPathsEnabled,或者直接把项目移到浅层目录。 - 代理设置: 在公司内网通过代理上网时,需要给pip配置代理:
pip install --proxy http://user:pass@proxy:port。
嗯,这里还要提一个我个人的常用技巧:如果你不确定某个SDK的安装是否完整,可以写一个小脚本尝试导入:
import my_sdk
print(my_sdk.__version__)
如果没报错,说明装好了。如果报 ModuleNotFoundError,八成是没装对或者虚拟环境没激活。
高效做法:把依赖写入 requirements.txt,然后一键 pip install -r requirements.txt。离线环境中同样可以用 pip download -r requirements.txt 批量下载。
嗯,最后再啰嗦一句:无论哪种安装方式,装完后都建议跑一遍 python -c "import my_sdk; print('OK')"。别问为什么,我曾经在客户环境中装完后没验证,结果现场演示时导入失败,场面一度十分尴尬。