Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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
wxPython“;“库未加载”;_Python_Wxpython_Wxwidgets - Fatal编程技术网

wxPython“;“库未加载”;

wxPython“;“库未加载”;,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,我为Mac制作了一个wxPython应用程序,并用py2app打包。有两个人已经表示他们无法启动它,并显示以下错误消息: ImportError: dlopen(/Users/username/Desktop/MCManager.app/Contents/Resources/lib/python2.6/wx/_core_.so, 2): Library not loaded: /usr/lib/libwx_macud-2.8.0.dylib Referenced from: /Users/u

我为Mac制作了一个wxPython应用程序,并用py2app打包。有两个人已经表示他们无法启动它,并显示以下错误消息:

ImportError: dlopen(/Users/username/Desktop/MCManager.app/Contents/Resources/lib/python2.6/wx/_core_.so, 2): Library not loaded: /usr/lib/libwx_macud-2.8.0.dylib
  Referenced from: /Users/username/Desktop/MCManager.app/Contents/Resources/lib/python2.6/wx/_core_.so
  Reason: image not found
我只能在Mac 10.6.7上测试该应用程序。两个有问题的人都在使用10.7.x。有没有其他人有过这个问题,或者知道它的意思?从消息中可以看出,它尝试加载wx库失败,但wx库应该在应用程序中 s资源文件夹,对吗

这是我的安装文件:

#! /usr/bin/env python

import py2app
from setuptools import setup

setup(
    options = dict(
        py2app = dict(
            iconfile = 'MCManager.icns',
            packages = 'wx',
            site_packages = True,
            plist = dict(
                CFBundleName = "MCManager",
                CFBundleShortVersionString = "1.2.2",
                CFBundleGetInfoString = "MCManager 1.2.2",
                CFBundleExecutable = "MCManager",
                CFBundleIdentifier = "net.sourceforge.mcmanager",
            ),
        ),
    ),
    app = ['ScriptUnix.py']
)

我使用
arch-i386 python26 filename.py py2app运行它(
arch
,因为我无法让Python在没有
arch
的情况下运行32位,而2.6是因为,长话短说,我无法将2.7与py2app一起使用)。

问题是您正在构建一个半独立的应用程序。正如在不同地方所解释的,如果您使用的是“供应商Python”,即预装OS X的任何Python版本,
py2app
无法构建独立的应用程序。例如:

如果使用--semi-standalone选项或供应商Python,则会忽略Python.framework。所有其他供应商文件(位于/usr/或/System/excluding/usr/local/中的文件)也被排除在外

因此,它不会将
wx
库打包到
/usr/lib
中,因为它们是供应商库。相反,它只是链接到现有的。标准OS X 10.7系统上没有这样的库。即使有,您最终明确链接到10.6版本的2.8.0版本这一事实也意味着它可能无法在以后的系统上工作

您需要做的是将这些
wx
库复制到您的
.app
包中,并从那里引用它们。如果您使用您的供应商Python运行它,
py2app
将不会为您做到这一点。这意味着您有三个选择:

  • 使用单独的Python安装
  • 不管怎么说,欺骗
    py2app
    构建一个独立的应用程序,可能是通过破解
    py2app
    源代码
  • 自己捆绑应用程序(或使用其他工具)
  • 最好的答案通常是1。在您的评论中,您说您能够安装Python2.7.3(可能来自Python.org?),并且您能够为供应商2.6安装
    py2app
    ,但是您无法为定制的2.7.3安装
    py2app
    。这听起来非常难以置信。(如果您能够以某种方式安装2.7.3,则应将其安装到您有权访问的目录中。)但是,即使这是真的,也无所谓;您可以将Python软件包安装到主目录下特定于用户的站点软件包目录中。你不需要管理员权限。事实上,大多数Unix软件都是这样设计的

    更简单的方法是使用。是的,我知道,你不能安装它,但你不必安装。如果您阅读了文档,甚至有一整套关于如何在无法安装任何东西的系统上引导virtualenv的说明。结果是基于system 2.7.3,您自己安装了Python,但您可以完全控制它。因此,您可以在那里安装
    py2app
    。(关于同时使用
    py2app
    virtualenv
    有一些注意事项,您应该在
    py2app
    文档中阅读。)

    如果您不能或不愿做这些事情,那么
    py2app
    就不能做您想做的事情,至少不能开箱即用。但它是开源的。源代码中甚至有注释解释了为什么它不尝试从系统Python生成独立版本。而且大多数真正棘手的东西都被分为不同的包(比如
    macholib
    altgraph
    ),所以你应该能够理解
    py2app
    本身,足以拼凑出一个适用于特定应用的独立包。(这比修改
    p2app
    以完全通用的方式解决根本问题要容易得多。)


    或者你可以看看其他做类似事情的工具,比如py2app。尝试在PyPI中搜索or,看看会出现什么。您通常可以将软件包安装到主目录中,也可以在不安装软件包的情况下运行它们,因此,请开始使用任何看起来有希望的软件包,看看它是否能解决您的问题。

    我将使用我的安装文件、参数和其他信息编辑我的答案。我有一个新安装的WXPython(但我不知道实际的WX C++库),OSX上的许多其他用户运行它没有问题。这仍然是不够的信息;你必须回答所有的问题,而不仅仅是其中的一些。但我可以猜测:您可能发布了一个半独立的构建,它将与任何拥有Python、wx和其他任何完全兼容版本的人一起工作,而不适用于任何其他人。这可能意味着每个人都使用10.6.x或更高版本,但不是10.5、10.7+或更早的10.6版本。我基本上回答了所有问题。我怎样才能使它完全独立?不,你没有回答所有问题。它是否是python26(在
    /usr/bin
    和/或
    /System/Library/…
    中)的股票?简短的版本是,
    py2app
    无法在系统Python安装之外自动创建完全独立的版本。因此,您要么必须了解
    py2app
    如何工作的详细信息,要么安装不同的Python,最好是股票Python.org发行版,并使用它来
    py2app
    。是的,每个虚拟环境都有自己的
    pip
    。这些都在文档的用法部分进行了描述,但简要的版本是:Do
    cd/path/to/virtualenv;source./bin/activate
    。现在您的virtualenv已为当前终端窗口激活,因此您只需在该窗口中执行
    pip安装py2app
    ,它使用virtualenv的
    pip
    ,因此它将安装到virtualenv而不是系统范围内,因此您不需要是root用户。您也可以显式地执行
    /path/to/virt