Python freeze.py生成的bin无法运行

标签 python binary freeze shared-libraries

我需要在客户端关键机器上运行Python 2.7脚本,所以我有权安装任何东西,当我什么也没说时,我什至没有在本地目录中安装任何东西,所以我找到的解决方案是将脚本传递给他使用包含电池的工具“freeze.py”创建的二进制文件 http://wiki.python.org/moin/Freeze ,我还将必需的和不可嵌入的 .so 库添加到同一文件夹(_io.so、_heapd.so,...)中,并授予它们可执行权限。

但是当我尝试执行二进制文件时,我得到:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site.py", line 562, in <module>
  File "/usr/lib/python2.7/site.py", line 544, in main
  File "/usr/lib/python2.7/site.py", line 271, in addusersitepackages
  File "/usr/lib/python2.7/site.py", line 246, in getusersitepackages
  File "/usr/lib/python2.7/site.py", line 236, in getuserbase
  File "/usr/lib/python2.7/sysconfig.py", line 558, in get_config_var
  File "/usr/lib/python2.7/sysconfig.py", line 457, in get_config_vars
  File "/usr/lib/python2.7/sysconfig.py", line 310, in _init_posix
IOError: invalid Python installation: unable to open /usr/lib/python2.7/config/Makefile (No such file or directory)

我猜它试图在默认的 Python 2.7 中找到一些代码,但这是荒谬的,因为 freeze 的目标是在没有 Python 的环境中可执行,来自文档:

If you want to write Python, but you don't know if your clients have Python installed, use this!

所以...我到底做错了什么?

P.S.:我尝试使用 hello.py 示例并导致相同的错误,这个工具肯定已经过时了吗?

最佳答案

我从源包中修补了Python-2.7.2/Tools/freeze/makefreeze.py,如下所示:

--- orig/Python-2.7.2/Tools/freeze/makefreeze.py    2011-06-11 17:46:28.000000000 +0200
+++ 2.7.2/Python-2.7.2/Tools/freeze/makefreeze.py   2011-11-15 18:18:33.632177119 +0100
@@ -23,6 +23,7 @@
 """ + ((not __debug__ and """
         Py_OptimizeFlag++;
 """) or "")  + """
+        Py_NoSiteFlag = 1;
         PyImport_FrozenModules = _PyImport_FrozenModules;
         return Py_FrozenMain(argc, argv);
 }

-> 我将 Py_NoSiteFlag = 1; 添加到卡住的 main(),因此启动时 python 解释器的隐式导入站点将被禁用。

弗兰克

关于Python freeze.py生成的bin无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486414/

相关文章:

python - 从 csv 文件列制作字典

python - z3 smt 求解器采用什么形式的输入?如何使用文件读取需要求解的方程?

c - 如何将无符号整数转换为 float ?

opengl-es - 键盘拆分卡在opengl应用程序中

Magento 1.7 导入/导出挂起

python - 如何为 Python 3.4 安装 OpenCV?

python - 如何使用 python API 实例化 AWS Linux?

java - 读取/写入二进制文件

java - 二进制搜索在 Java 中给出 Index Out of Bound 异常

java - 为什么 SocketTimeoutException 使我的程序卡住?