我有一个旧的c ++ / python项目,其中包括python zip文件“ python27.zip”。该zip文件包含pyo优化文件。
我正在尝试将python从2.7更新到最新的3.7.1(还更新了* .so lib文件)
我做了以下步骤:
./configure --enable-shared --prefix=~/python-3.7.1/dist
make
sudo make install
我看到我有~/python-3.7.1/dist/lib/python3.7
,它的结构与我以前的2.7 zip中的结构很接近。
接下来,我尝试将所有文件夹编译为pyo,例如:
python3.7 -O -m compileall .
它告诉我它需要Lib和Include(标题),所以我也将那两个文件夹复制到了该位置。
在python3.7 -O -m compileall .
内再次做dist/lib/python3.7
会告诉我
Listing './Lib/site-packages'...
Listing './Lib/sqlite3'...
....
和一些错误,例如:
Compiling './Lib/test/badsyntax_future10.py'...
*** File "./Lib/test/badsyntax_future10.py", line 3
from __future__ import print_function
^
SyntaxError: from __future__ imports must occur at the beginning of the file
我看不到里面有任何大便。另外,如果我尝试对1个文件执行相同操作,例如python3.7 -O token.py
(无错误),并且内部也没有pyo。
不要严格地判断我,我同意理解这个编译过程可能是错误的。
答案 0 :(得分:0)
我必须创建自己的工具,因为没有找到适合将所有python模块编译为一个位置/归档的任何东西。
此PY_COMPILE_HELPER在github上可用。仅从ubuntu进行了测试。
使用此模块,您可以:
用法示例:
$ ./py_compile_helper.py ./Python-3.7.1/Lib ./out -z -c -o2