2013-07-24 4 views
1

Я пишу приложение с использованием Python с привязками PyQT4, которое должно быть мультиплатформенным. Версия Python, которую я использую, - 3.3. Я не могу построить pysox (привязки SoX для Python) под MS WindowsXP, хотя, шаг за шагом, мне удалось: - скомпилировать Sox 14.4.1 из источников, используя VC++ 10.0 Express. - скомпилируйте Cython для компиляции pysox. Прямо сейчас он не может построить, говоря, что strings.h не найден (если я выложу SoX-источники с помощью libsox.lib в соответствующий каталог для pysox), то - что-то еще не найдено и т. Д. Короче говоря, это не компилируется, потому что он продолжает запрашивать заголовки, специфичные для Linux, которые мне сейчас не нужны, потому что я под Windows.pysox под Windows

Вопрос в том, можно ли скомпилировать pysox под Windows AT ALL? Или я должен скорее скомпилировать его под Linux, а затем импортировать скомпилированные библиотеки в Windows, потому что Python является мультиплатформенным?

+0

Поскольку у вас есть рабочий Sox, вы пробовали просто установить pysox из pip? –

+0

Возможно ли это сделать в Windows? Нужен ли мне Cygwin? –

+0

Я бы не знал. Как я уже сказал, я просто попробую установить pysox через pip и посмотреть, что произойдет. –

ответ

0

всем, кто читает это и ударяет головой в стену: Не беспокойтесь. Я не говорю, что это невозможно, но когда это непросто, просто сделайте более легкое решение. Sox - инструмент командной строки. Для вас уже создана последняя версия Windows, поэтому вам абсолютно не нужно pysox. Вот пример Python 3, как использовать sox.exe, при условии, что распространяется с приложением и находится в той же папке:

command = """sox.exe "{0}" """.format(FilePath) 
    startupinfo = subprocess.STARTUPINFO() 
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
    sox = subprocess.Popen(command, startupinfo = startupinfo) 

Вы не увидите всплывающее окно, будет мало, чтобы без задержки, вы может реализовать функции обратного вызова, если вам действительно нужно. Вот полный список доступных команд: http://sox.sourceforge.net/sox.html

Единственная плохая вещь, что это не представляется возможным отправить Ctrl+C команду sox.exe как подпроцесс, чтобы остановить запись, например. Таким образом, я закончил использование pyaudio для записи и sox.exe для преобразования .wav в .ogg с определенными параметрами.

Смежные вопросы