Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos cx_冻结Mac构建已停止在_cTypesfor Homebrew和Python_Macos_Python 2.7_Homebrew_Cx Freeze - Fatal编程技术网

Macos cx_冻结Mac构建已停止在_cTypesfor Homebrew和Python

Macos cx_冻结Mac构建已停止在_cTypesfor Homebrew和Python,macos,python-2.7,homebrew,cx-freeze,Macos,Python 2.7,Homebrew,Cx Freeze,我们使用cx_Freeze在Mac OS下生成python应用程序的独立二进制构建。构建在构建机器(安装了自制和Python)下运行良好,但在客户端机器上失败,并显示以下错误消息 Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/__startup__.py", line 14, in run module.run() Fi

我们使用cx_Freeze在Mac OS下生成python应用程序的独立二进制构建。构建在构建机器(安装了自制和Python)下运行良好,但在客户端机器上失败,并显示以下错误消息

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/__startup__.py", line 14, in run
      module.run()
  File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 26, in run
      exec(code, m.__dict__)
  File "./utest2.py", line 15, in <module>
      from ttLib import *
  File "ttLib.py", line 848, in init ttLib
      import ctypes
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 7, in <module>
      from _ctypes import Union, Structure, Array


ImportError: dlopen(/Users/gff/src/TextSeek_test/build/test_build/lib/_ctypes.so, 2): Symbol not found: __PySlice_AdjustIndices
  Referenced from: /Users/gff/src/TextSeek_test/build/test_build/lib/_ctypes.so
  Expected in: flat namespace
 in /Users/gff/src/TextSeek_test/build/test_build/lib/_ctypes.so
  • 在客户端计算机上,安装冻结的应用程序后,尝试手动将生成目录的
    lib
    子目录中的所有动态库(
    .so
    .dylib
    ,…?)复制到生成目录本身。还将build目录中的所有动态库复制到其
    lib
    子目录中。这能解决问题吗?在构建机器上,当然应该使用与运行未冻结的应用程序相同的python版本来生成冻结的应用程序

  • 如果1。解决这个问题,找出需要复制哪些动态库才能使应用程序工作(即找出您所做的哪些手动复制操作是真正必要的)。在安装脚本中使用
    build\u exe
    include\u files
    列表,让
    cx\u Freeze
    在构建步骤中自动包含动态库。您可以使用元组
    (源,目标)
    作为
    包含\u文件
    列表中的项,让
    cx\u冻结
    将文件从
    复制到特定的
    目标
    到生成目录中

  • 说明:我不知道Mac/OS。但我相信您所描述的问题可能与Windows下的“代码>微软Visual C++ +可重新分发DLL/CODE >类似:<代码> CXYRILING/<代码> 5.1.1包含在生成目录的 LIB < /Cult>子目录中的包,在以前版本的中,它们以前在构建目录本身中。某些动态库需要在build目录中找到,但被
    cx\u Freeze
    错误地包含在
    lib
    子目录中,反之亦然。在生成计算机上,这通常不是问题,因为库的副本通常在系统路径中找到,但在客户端计算机上,通常在系统路径上找不到库的副本,或者是不兼容的副本


    顺便说一下,
    build\u exe
    选项
    “include\u msvcr”:True
    cx\u Freeze
    5.1.1中似乎不起作用,请参见。

    我自己找到了解决方案


    此问题是由错误链接的动态库文件引起的。我们使用“otool-L”找到依赖项,并将它们逐个与“安装\u名称\u工具-change”重新链接。程序终于运行了。

    您使用的是哪个版本的cx\U Freeze
    ?Mac High Sierra中的5.1.1版本。我自己找到了解决方案。此问题是由错误链接的动态库文件引起的。我们使用otool通过install_name_工具逐个查找依赖项和链接。程序终于成功了。听起来很棒。请将解决方案的描述添加为问题的答案,并将此答案标记为已接受。发件人:若要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色切换为已填写。谢谢。但这个问题确实是由MacOS特定的原因造成的。我的Windows版本已通过,没有问题。我已经调查了一些关于错误链接的动态文件的线索,并使用install_name_工具来修复它们。但现在仍有新的部署问题需要解决。
    build_exe_options = {
        "packages":  ["wcwidth", "watchdog", "xlrd", "jinja2", "subprocess"],
        "excludes": [ "AppKit", "Carbon", "CoreFoundation", "Finder", "Foundation", "FSEvents", "objc"],
        "include_msvcr": True,
        "zip_include_packages":["winshell", "wcwidth", "watchdog", "pyhk", "xlrd", "jinja2",\
            "argh", "ctypes",  "email", "encodings" ]
        }
    exeList = [Executable( "utest2.py", base = None, targetName= "utest")  ]
    
    setup(  name = "XXX",
            description = u"XXX desc",
            options = {
                "build_exe": build_exe_options,
                'bdist_mac': {
                    'bundle_name': "XXX",
                }
    
            },
            executables = exeList)