首先对于本文所说的两个概念做一个解释:
开发机器 == 开发环境 == 可以联网
目标机器 == 生产环境 == 无法联网
有两种方法可供选择。
方法一 开发机器上下载wheel包拷至目标机器上使用pip安装
先保证开发环境和生产环境上都有安装python3和pip3。
查看目标库的所有依赖
安装pipdeptree后,通过
pipdeptree -a -p tensorflow > requirements.txt
可查看tensorlfow所需要安装的所有第三方库,附在文末。本例采用tensorflow==2.0.0。
ps. 生成的requirements.txt需要手动打开,去掉子层依赖,仅留下顶层依赖。如果有更好的办法,请留言。
下载目标库及依赖库文件
pip3 wheel -w TfWithAllDeps -r requirements.txt
将所有需要文件下载到TfWithAllDeps文件夹内。
在另一台机器上离线安装wheel包
将requirements.txt放入TfWithAllDeps文件夹内,放到另一台机器中,执行一下命令即可
pip3 install --no-index --find-links='.' -r requirements.txt
requirements.txt内容如下:
absl-py==0.13.0
astor==0.8.1
cachetools==4.2.2
certifi==2018.1.18
charset-normalizer==2.0.4
dataclasses==0.8
gast==0.2.2
google-auth==1.35.0
google-auth-oauthlib==0.4.5
google-pasta==0.2.0
grpcio==1.32.0
h5py==2.10.0
idna==2.6
importlib-metadata==4.5.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
Markdown==3.3.4
numpy==1.19.5
oauthlib==3.1.1
opt-einsum==3.3.0
protobuf==3.17.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
requests==2.26.0
requests-oauthlib==1.3.0
rsa==4.7.2
setuptools==57.4.0
six==1.15.0
tensorboard==2.0.2
tensorflow==2.0.0
tensorflow-estimator==2.0.1
termcolor==1.1.0
typing-extensions==3.7.4.3
urllib3==1.22
Werkzeug==2.0.1
wheel==0.37.0
wrapt==1.12.1
zipp==3.4.1
方法二 开发机器上直接打包所有文件拷至目标机器
生产环境上已经安装python3和pip3,添不添加到系统环境变量不作要求。
在生产环境下使用pip3安装tensorflow后,打包整个python库文件至目标机器,解压,添加所在目录至系统环境变量即可。
有几点需要特别注意:
window7下已经不支持python3.9及以上版本,请注意选择合适版本。
在生产环境下的目录结构最好与开发环境的目录结构一致,否则拷贝后的pip将无法正常使用。
如果出现缺失相关动态库的报错信息,可采用DirectX修复工具下载补全相关的库文件。
对比两种方法,显然第二种操作更方便。