error CODEC2_MODE_1400 and CODEC2_MODE_450 undeclared
raoniluar opened this issue · 4 comments
I'm using Ubuntu 18.04 and I tried to install pycodec2 in two different ways.
First, I installed codec2 with:
sudo apt install libcodec2-dev
Then, I tried to install pycodec2 with:
python3 setup.py install
And I get this error:
Collecting pycodec2
Downloading https://files.pythonhosted.org/packages/a9/04/2002d37f184815f33bf7c7aa23227f4a522d4050497a27249dd47d91a435/pycodec2-1.0.4.tar.gz (64kB)
100% |████████████████████████████████| 71kB 856kB/s
Installing collected packages: pycodec2
Running setup.py install for pycodec2 ... error
Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-13hoywvk/pycodec2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-d550qjrh-record/install-record.txt --single-version-externally-managed --compile:
/usr/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
warnings.warn(msg)
running install
running build
running build_py
package init file 'pycodec2/__init__.py' not found (or not a regular file)
running build_ext
skipping 'pycodec2/pycodec2.c' Cython extension (up-to-date)
building 'pycodec2' extension
creating build
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/pycodec2
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/local/lib/python3.6/dist-packages/numpy/core/include -I/usr/include/python3.6m -c pycodec2/pycodec2.c -o build/temp.linux-x86_64-3.6/pycodec2/pycodec2.o
In file included from /usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1832:0,
from /usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/ndarrayobject.h:12,
from /usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/arrayobject.h:4,
from pycodec2/pycodec2.c:607:
/usr/local/lib/python3.6/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
#warning "Using deprecated NumPy API, disable it with " \
^~~~~~~
pycodec2/pycodec2.c: In function ‘__pyx_pymod_exec_pycodec2’:
pycodec2/pycodec2.c:6766:36: error: ‘CODEC2_MODE_450’ undeclared (first use in this function); did you mean ‘CODEC2_MODE_1400’?
__pyx_t_2 = __Pyx_PyInt_From_int(CODEC2_MODE_450); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
^~~~~~~~~~~~~~~
CODEC2_MODE_1400
pycodec2/pycodec2.c:6766:36: note: each undeclared identifier is reported only once for each function it appears in
pycodec2/pycodec2.c:6778:36: error: ‘CODEC2_MODE_450PWB’ undeclared (first use in this function); did you mean ‘CODEC2_MODE_450’?
__pyx_t_2 = __Pyx_PyInt_From_int(CODEC2_MODE_450PWB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)
^~~~~~~~~~~~~~~~~~
CODEC2_MODE_450
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-13hoywvk/pycodec2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-d550qjrh-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-13hoywvk/pycodec2/
When I use this command instead:
sudo pip3 install pycodec2
I get the same error before.
I took a quick look and it seems to me that 18.04's codec2 library is too old (and there of incompatible) for the current pycodec2 version. 18.04 is at 0.7, while 450 mode was added in codec2-0.9.2.
Would it be possible for you to install a newer version of codec2? Alternatively you could fork pycodec2 and remove those incompatible modes. We could look into other options if these are infeasible.
I've been running into this myself building Docker images.
Codec2 packages aren't getting promoted from testing repositories in many Linux distributions, it's not clear why but likely there's just not that much demand. Codec2 users on each distribution might offer to take up maintenance of the packages to ensure timely updates.
Specifying to pip a version of pycodec2 compatible with the system codec2 should be sufficient, right?
The hard part is mapping pycodec2 versions to system codec2 package versions, and that sort of thing.
In Ubuntu 18.04, I ran into a numpy issue using the pip numpy and had to use the system package manager to get numpy installed.
apt-get install libcodec2-0.7 libcodec2-dev python3 python3-pip python3-numpy gets you what you need as far as system dependencies.
pip3 install Cython and then pip3 install pycodec2==1.0.2 which is the last installable version from my brief testing.