首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译python pyo文件

编译python pyo文件
EN

Stack Overflow用户
提问于 2018-11-15 12:41:35
回答 1查看 556关注 0票数 1

我有一个老的c++/python项目,其中包含一个python27.zip文件。这个zip文件包含pyo优化的文件。

我正在尝试将python从2.7更新到最新的3.7.1 (也更新了*.so库文件)

我做了接下来的步骤:

代码语言:javascript
复制
./configure --enable-shared --prefix=~/python-3.7.1/dist
make
sudo make install

我看到我有~/python-3.7.1/dist/lib/python3.7,它的结构接近我在我的旧2.7zip中的结构。接下来,我尝试将所有文件夹编译成pyo,如下所示:

代码语言:javascript
复制
python3.7 -O -m compileall .

它告诉我它需要Lib并包含(标题),所以我也在那个位置复制了这两个文件夹。

再次在python3.7 -O -m compileall .中执行dist/lib/python3.7向我展示

代码语言:javascript
复制
Listing './Lib/site-packages'...
Listing './Lib/sqlite3'...
....

还有一些错误,如:

代码语言:javascript
复制
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。

不要严格地评判我,我同意我理解这个编译过程可能是错误的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-15 19:16:00

我必须创建自己的工具,因为我没有找到任何适合将所有python模块编译到一个位置/存档的工具。

帮手可在github上使用。它只在ubuntu进行了测试。

有了这个模块,您可以:

  • 设置编译的输入和输出文件夹
  • 输出源将具有与输入源相同的结构。
  • 设置二进制文件的优化级别
  • 跳过或包含测试模块
  • 将编译后的文件压缩到一个存档中
  • 从缓存中清除以前编译的文件

用法示例:

代码语言:javascript
复制
$ ./py_compile_helper.py ./Python-3.7.1/Lib ./out -z -c -o2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53319737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档