python的目标库从开发环境迁移到生产环境
首先对于本文所说的两个概念做一个解释:
开发机器 == 开发环境 == 可以联网
目标机器 == 生产环境 == 无法联网
有两种方法可供选择。
方法一 开发机器上下载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修复工具下载补全相关的库文件。
对比两种方法,显然第二种操作更方便。