如何将pip已安装包复制至无网络环境?
没问题,这种离线迁移Python包的需求太常见了,我给你两种实用方案,你可以根据场景选择:
方案1:提前下载所有依赖包(推荐,兼容性最好)
这种方法先把需要的包都下载到本地,再复制到无网环境安装,能避免直接复制包文件的兼容性问题,尤其适合跨系统或不同Python版本的场景:
- 第一步:在有网的源环境生成依赖清单
先导出当前环境的所有包到requirements.txt:pip freeze > requirements.txt - 第二步:下载所有包到指定本地目录
用pip download命令把清单里的包都下载到一个文件夹(比如叫packages):
这里pip download -r requirements.txt -d ./packages-d参数用来指定下载的目标目录,运行完后packages文件夹里会有所有需要的.whl或.tar.gz格式的包文件。 - 第三步:复制文件到目标环境
把requirements.txt和packages文件夹一起拷贝到无网的目标机器上,比如用U盘、内网传输等方式。 - 第四步:在目标环境离线安装
进入目标环境,运行以下命令安装,告诉pip只从本地文件夹找包,不要去PyPI下载:pip install -r requirements.txt --no-index --find-links=./packages
方案2:直接复制已安装的包文件(临时快速迁移)
如果源和目标环境的Python版本、操作系统完全一致,可以直接复制已安装的包文件,省得下载,但要注意兼容性问题(比如带C扩展的包可能会报错):
- 第一步:找到源环境的包安装目录
打开Python终端,运行以下命令获取site-packages路径(包都存在这里):
或者用import site print(site.getsitepackages())pip show查看单个包的安装位置,比如:
输出里的pip show requestsLocation字段就是该包的安装目录。 - 第二步:复制对应的包文件
从site-packages里复制两个关键部分:- 包的代码文件夹(比如
requests文件夹) - 对应的元数据文件夹(比如
requests-2.31.0.dist-info)
这两个都要复制,不然pip可能识别不到这个包。
- 包的代码文件夹(比如
- 第三步:粘贴到目标环境的site-packages目录
把复制的文件夹粘贴到目标环境的site-packages目录里,和源环境的路径对应。 - 第四步:验证安装
在目标环境打开Python终端,尝试import包,比如import requests,如果没有报错就说明成功了。
注意事项
- 对于带C扩展的包(比如numpy、pandas、scipy这类),直接复制很容易出问题,因为它们是编译后的二进制文件,依赖系统环境,这种情况一定要用方案1。
- 如果源环境本身是离线的,你可以找一台和源环境同Python版本、同操作系统的有网机器,用方案1下载包,再复制到源/目标环境。
内容的提问来源于stack exchange,提问作者user7420658
相关产品推荐
相关产品推荐

