py2app抛出[errno 35]资源在无条件导入期间不可用

时间:2015-01-01 01:03:44

标签: macos python-2.7 pandas scipy py2app

我使用python 2.7通过macports,pyobjc,cocoa和特别是scipy(通过FlowCytometryTools)安装py2app来创建一个小型mac应用程序。使用sudo python setup.py py2app运行Py2app的setup.py可以很好地与-A进行测试,但是在没有该参数的情况下运行时无法完成以创建完整的.app构建。

构建过程将通过无条件导入获得可变距离,然后给出error: [Errno 35] Resource temporarily unavailable并立即退出。发生错误之前完成的无条件导入行数会发生变化。在重新启动后立即运行时,可以看到迄今为止最长的运行时间。我尝试使用和不删除以前的build / dist文件夹运行都没有效果。

Modules not found (unconditional imports):
...
 * builtins.int (Cython.Build.Inline, Cython.Compiler.ExprNodes, IPython.utils._tokenizeerror: [Errno 35] Resource temporarily unavailable

我的setup.py看起来像这样:

import sys
sys.setrecursionlimit(1500) #required to avoid recursion triggered early exit in py2app while compiling scipy. (default is 1000)
from setuptools import setup

APP = ['FlowMac.py']
DATA_FILES = ['FlowMac_Main.xib']
OPTIONS = {'argv_emulation': True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

我的python文件FlowMac.py的导入部分如下所示:

from Cocoa import *
from Foundation import *
from AppKit import *
from FlowCytometryTools import * #file/data handling via scipy and pandas
from pylab import * #graphing histograms

注释掉FlowCytometryTools和pylab导入可以完成py2app构建,但当然会使程序无法运行。

  • 发生了什么事?
  • 如何获取有关哪些资源不可用的更多信息?
    • 是否对我的问题提出了递归限制?

我在配备8GB内存的MacBook Pro上运行优胜美地,所以我在这里碰壁时感到非常惊讶。 谢谢你的时间。

2015年4月29日更新: 如果我从py2app启动器setup.py的datafiles数组中删除我的.xib,导入一切正常。只需导入Cocoa,Foundation和Appkit的空白文件就可以正常工作。使用FlowCytometryTools,pylab,scipy,matplotlib,numpy中的任何一个导入xib都不起作用。 pylab和FlowCytometryTools依赖于其他三个,而scipy,matplotlib或numpy中的任何一个都为其他两个带来了py2app的收件人。其中一个收件人没有使用xib,但我不知道为什么......

2 个答案:

答案 0 :(得分:0)

没有使用py2app的经验,但我想知道你是否尝试生成一个更难以帮助排除故障的代码的最小版本?

可能让FlowMac.py只包含import语句:

import Cocoa
import Foundation
import AppKit
import FlowCytometryTools
import pylab

还可以缩小问题是由于pylab还是由于FlowCytometryTools而出现? (通过单独评论它们?)

答案 1 :(得分:0)

从我的测试来看,这个错误似乎是由py2app的日志输出本身引起的。尝试将标准错误重定向到文件:

python setup.py py2app 2>error_log

这应该解决错误。