2015-01-01 3 views
1

Я использую python 2.7, установленный через macports, pyobjc, какао и особенно scipy (через FlowCytometryTools) с py2app для создания небольшого mac-приложения. Запуск setup.py Py2app с sudo python setup.py py2app отлично подходит для -A для тестирования, но при запуске без этого параметра невозможно создать полную сборку .app.py2app throws [errno 35] Ресурс недоступен при безусловном импорте

Процесс сборки получит переменное расстояние через безусловный импорт, а затем даст 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'], 
) 

и раздел импорта моего файла питона 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, но, разумеется, делает программу нефункциональной.

  • Что происходит?
  • Как получить дополнительную информацию о том, какой ресурс недоступен?
    • лимитировал предел рекурсии ключ к моей проблеме?

Я бегу Йосемити на MacBook Pro с 8 Гб оперативной памяти, так что я очень удивлен, что попав в стену здесь. Спасибо за ваше время.

ОБНОВЛЕНИЕ 4/29/2015: Импорт все работает нормально, если я удалю свой .xib из массива datafiles пула py2app setup.py. Пустой файл с просто импортировать Cocoa, Foundation и Appkit отлично работает. Импорт xib с любым из FlowCytometryTools, pylab, scipy, matplotlib, numpy не работает. pylab и FlowCytometryTools полагаются на другие три, и любой из scipy, matplotlib или numpy приносит рецепты py2app для двух других. Один из этих рецептов не работает с xib, но я не знаю, почему ...

ответ

0

Нет опыта работы с py2app, но мне интересно, пытаетесь ли вы создать более минимальную версию кода, помощь по устранению неполадок?

Может быть, имея FlowMac.py не включают в себя ничего, кроме операторов импорта:

import Cocoa 
import Foundation 
import AppKit 
import FlowCytometryTools 
import pylab 

Также вы могли бы сократить его до, появляется ли проблема из-за pylab или из-за FlowCytometryTools? (Комментируя их отдельно?)

+0

Hi Eugene! Я попытался отключить импорт отдельно. Упаковщик терпит неудачу, когда я включаю '' 'import scipy''' самостоятельно или косвенно через FlowCytometryTools и/или pylab. Есть ли способ получить больше информации об ошибке? Отсутствие трассировки или любой другой информации об ошибке оставляет py2app сам по себе как монолитный черный ящик. Единственный другой вариант, о котором я могу думать, - это полностью удалить python и повторно реализовать FlowCytometryTools в Objective-C, чтобы избежать py2app, но это было бы довольно трудоемким. – TheAtomicOption

+0

Я предполагаю, что это происходит, даже если файл FlowMac.py содержит ничего, кроме «import scipy»? Опять же, я не знаю py2app, но предел рекурсии выглядит странно. Поиск в Google, который, похоже, не дал никаких результатов. Возможно ли, что что-то запуталось в среде разработки? (Вы можете попробовать построить с другой машины?) –

+0

Наконец-то я получил доступ к другому компьютеру. Пустой файл с «import scipy» работает, но я получаю ту же ошибку с полной программой. Для того, чтобы понять это, нужно делать больше полу-случайных копаний. – TheAtomicOption

0

Из-за моего тестирования эта ошибка, по-видимому, вызвана самим выходом журнала из py2app. Попробуйте перенаправить стандартную ошибку в файл:

python setup.py py2app 2>error_log 

Это должно обернуться ошибкой.