实现tensorflow 2.11离线编译的一种方法

因为服务器所在网络环境的原因,不得不在无法连接外网的环境下编译tensorflow 。过程有点痛苦,走了不少弯路,最后还是实现了。具体方法是,先在一台能连接互联网的机器上使用正常的方法用官方提供的bazel 编译一遍。然后,编译过程中他会自动下载所有需要的包到~/.cache/baxel/_bazel_(用户名)这个目录。(足足差不多10G!),然后把这个目录整个打包复制到不能连接外网的目标机器。放在相同目录下,注意目录需要改为当前用户名。然后把 tensorflow-2.11(源码所在目录)/tensorflow/ 里的 workspace 0 – 3. bzl 文件里的包改为本地目录位置,方法可以是,改为file://xxxxx/ 这样的方式,也可以是搭建一个web 服务,然后改为 http://xxxx/xxx.tar.gz  这样的方式。这个自行发挥了。最后他还有个提示,说有个什么目录文件存在,所以编译不了,直接把哪个目录删了就行。还有一个问题是他会提示验证golang sdk 版本,这个问题很奇怪,我试了两台机,一台不用管,直接跳过了。另一台是强行修改了一个sdk.bzl  文件,把他要打开的一个go 版本校验js  手工下载并改到这个sdk.bzl 文件里才能通过。这个看他提示照着办了。