前言

  因为一些复杂的原因,打算对项目的 4.25 引擎升级 Python2 到 Python3。
  这个过程踩的坑做一些总结。

  UE4.26 已经配置上 python 3.7.7
  所以升级 Python 并没有太大的困难,将相关的代码和文件复制过去再修改就差不多了。

Python3 配置

  首先可以先安装 UE 4.26

Engine\Source\ThirdParty\Python3
Engine\Binaries\ThirdParty\Python3

  然后将上面两个目录拷贝到项目工程。
  然后再去修改 Source 里面的代码。
  然后需要修改 PythonScriptPlugin 下的 build.cs 依赖修改 “Python3”。

alt

  当然最好是将 UE4.26 的 PythonScriptPlugin 也搬过来。
  只是得去掉部分新模块依赖的代码,才行。

踩坑过程

  第一次编译不知道需要搬运 Binaries ,于是就去 Python 官方下载 Python3.7 的版本。
  然后安装到 C 盘 Python37 目录。
  莫名其妙成功地通过了编译,后来我发现我编译的 Python sys.version 是 3.7.9 版本
  不是 UE4.26 官方的 3.7.7 才发现问题。

  后来查了 Python3.build.cs 才发现问题。

alt

  它默认找不到 Binaries 是读取 C 盘的这个路径。
  所以我的把 Binaries 里的 Python 文件给补充上,否则推到项目都启动不了 Python

  后来在 git 上将 Binaries 推上去,本地编译也通过了。
  但是项目组那边编译还是出问题了,报错显示是 Python SDK not found
  一开始不知道是什么情况,毕竟我本地已经编译通过了。搜索报错,可以找到还是 Python3.build.cs 提示的错误。
  最后经过我修改 Python3.build.cs 打印为啥会触发这个问题,才发现是原来是一些 exe 之类的文件被 gitignore 给过滤掉了。
  我又得用命令行 git add --force . 强行将文件推上去。
  如此即可解决问题。

总结

  因为有 UE4.26 的 Py3 可以抄。
  所以升级过程并没有那么困难。