Не удается установить pik scikits.talkbox на MacOS - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь установить scikits.talkbox на моем MacOS. Я использую Python 3.7.3

Если я запускаю

pip install scikits.talkbox

или

pip3 install scikits.talkbox

, я получаю следующие ошибки (надеюсь, я включил все)

scikits/talkbox/tools/src/cffilter.c:3287:21: error: no member named 'exc_type' in 'struct _ts'
    *type = tstate->exc_type;
            ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3288:22: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    *value = tstate->exc_value;
                     ^~~~~~~~~
                     curexc_value
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
    PyObject *curexc_value;
              ^
scikits/talkbox/tools/src/cffilter.c:3289:19: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
    *tb = tstate->exc_traceback;
                  ^~~~~~~~~~~~~
                  curexc_traceback
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
    PyObject *curexc_traceback;
              ^
scikits/talkbox/tools/src/cffilter.c:3298:24: error: no member named 'exc_type' in 'struct _ts'
    tmp_type = tstate->exc_type;
               ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3299:25: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    tmp_value = tstate->exc_value;
                        ^~~~~~~~~
                        curexc_value
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
    PyObject *curexc_value;
              ^
scikits/talkbox/tools/src/cffilter.c:3300:22: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
    tmp_tb = tstate->exc_traceback;
                     ^~~~~~~~~~~~~
                     curexc_traceback
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
    PyObject *curexc_traceback;
              ^
scikits/talkbox/tools/src/cffilter.c:3301:13: error: no member named 'exc_type' in 'struct _ts'
    tstate->exc_type = type;
    ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3302:13: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    tstate->exc_value = value;
            ^~~~~~~~~
            curexc_value
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
    PyObject *curexc_value;
              ^
scikits/talkbox/tools/src/cffilter.c:3303:13: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
    tstate->exc_traceback = tb;
            ^~~~~~~~~~~~~
            curexc_traceback
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
    PyObject *curexc_traceback;
              ^
scikits/talkbox/tools/src/cffilter.c:3319:24: error: no member named 'exc_type' in 'struct _ts'
    tmp_type = tstate->exc_type;
               ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3320:25: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    tmp_value = tstate->exc_value;
                        ^~~~~~~~~
                        curexc_value
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
    PyObject *curexc_value;
              ^
scikits/talkbox/tools/src/cffilter.c:3321:22: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
    tmp_tb = tstate->exc_traceback;
                     ^~~~~~~~~~~~~
                     curexc_traceback
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
    PyObject *curexc_traceback;
              ^
scikits/talkbox/tools/src/cffilter.c:3322:13: error: no member named 'exc_type' in 'struct _ts'
    tstate->exc_type = *type;
    ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3323:13: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    tstate->exc_value = *value;
            ^~~~~~~~~
            curexc_value
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
    PyObject *curexc_value;
              ^
scikits/talkbox/tools/src/cffilter.c:3324:13: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
    tstate->exc_traceback = *tb;
            ^~~~~~~~~~~~~
            curexc_traceback
/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
    PyObject *curexc_traceback;
              ^
scikits/talkbox/tools/src/cffilter.c:3537:25: warning: implicit declaration of function 'PyNumber_Int' is invalid in C99 [-Wimplicit-function-declaration]
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
                        ^
scikits/talkbox/tools/src/cffilter.c:3537:19: warning: incompatible integer to pointer conversion initializing 'PyObject *' (aka 'struct _object *') with an expression of type 'int' [-Wint-conversion]
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
                  ^     ~~~~~~~~~~~~~~~
scikits/talkbox/tools/src/cffilter.c:3558:25: warning: implicit declaration of function 'PyNumber_Int' is invalid in C99 [-Wimplicit-function-declaration]
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
                        ^
scikits/talkbox/tools/src/cffilter.c:3558:19: warning: incompatible integer to pointer conversion initializing 'PyObject *' (aka 'struct _object *') with an expression of type 'int' [-Wint-conversion]
        PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
                  ^     ~~~~~~~~~~~~~~~

Я подозреваю, что есть некоторые проблемы с setuptools, которые я только что обновил, безрезультатно. Есть идеи?

1 Ответ

1 голос
/ 05 октября 2019

Я получаю те же ошибки на Python 3.7.4 на macOS. Он связан с кодами, связанными с Cython:

scikits/talkbox/tools/src/cffilter.c:3287:21: error: no member named 'exc_type' in 'struct _ts'
    *type = tstate->exc_type;
            ~~~~~~  ^
scikits/talkbox/tools/src/cffilter.c:3288:22: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
    *value = tstate->exc_value;
                     ^~~~~~~~~
                     curexc_value

Во-первых, пакет scikits.talkbox очень старый с его последним выпуском waaaaayназад от 28 августа 2009 г. (см. 0,25 ), то есть около 10 лет назад! Кажется, он не совместим или даже не был портирован для Python 3.

Он успешно устанавливается на Python 2.7, хотя:

$ python -V
Python 2.7.16
$ python -m pip install numpy scipy
...
$ python -m pip install scikits.talkbox
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting scikits.talkbox
  Using cached https://files.pythonhosted.org/packages/65/a0/410eb932e1765186a4728d1c9b28410695d554c47439bcb69a407d5d3921/scikits.talkbox-0.2.5.tar.gz
Requirement already satisfied: numpy in /Users/cerberus/.virtualenvs/test-py27/lib/python2.7/site-packages (from scikits.talkbox) (1.16.5)
Building wheels for collected packages: scikits.talkbox
  Building wheel for scikits.talkbox (setup.py) ... done
  Created wheel for scikits.talkbox: filename=scikits.talkbox-0.2.5-cp27-cp27m-macosx_10_13_x86_64.whl size=68422 sha256=4585d129fe5ba2de97935f723f2d84a8b908480528c66cf00714f8a5f56c6bee
  Stored in directory: /Users/cerberus/Library/Caches/pip/wheels/40/06/3f/05c8ab2b4a0cfb32ad02c449e5c949c592cd0c6458db0e7f5f
Successfully built scikits.talkbox
Installing collected packages: scikits.talkbox
Successfully installed scikits.talkbox-0.2.5

Если вы хотите поддержку Python 3, выПридется поднять проблему на странице scikits.talkbox Github , но, судя по истории этого репо, кажется, что автор больше не активен в этом проекте.

OutЛюбопытно, что я попытался найти обходной путь для установки на Python 3. По сути, пакет включает в себя предварительно скомпилированные файлы Cython, которые не совместимы с Python 3 (с ошибками с файлами *.c). Я попытался перекомпилировать его с помощью Cython на Python3.7:

# download the source code from PyPi
$ wget https://files.pythonhosted.org/packages/65/a0/410eb932e1765186a4728d1c9b28410695d554c47439bcb69a407d5d3921/scikits.talkbox-0.2.5.tar.gz
$ tar -xvzf scikits.talkbox-0.2.5.tar.gz
$ cd scikits.talkbox-0.2.5/

# re-compile with Cython on Python 3.7
$ python3 -V
Python 3.7.4
$ python3 -m pip install numpy scipy cython
$ find . -name '*.pyx' -exec cython {} \;
$ python3 -m pip install .
...
Successfully installed scikits.talkbox-0.2.5

Кажется, я успешно установил НО при его использовании:

$ python3
Python 3.7.4 (default, Sep  7 2019, 18:29:04) 
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import scikits.talkbox
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/cerberus/.virtualenvs/test-py37/lib/python3.7/site-packages/scikits/talkbox/__init__.py", line 6, in <module>
    __all__ += tools.__all__
AttributeError: module 'tools' has no attribute '__all__'
>>> 

.. которая является той же самой неразрешенной, незамеченной ошибкой, сообщенной в репозитории пакета:
https://github.com/cournape/talkbox/issues/8


Итак ... кажется, что ваши единственные варианты:

...