Installation on Windows errored out with exit status 1

I'm getting an error when I attempt to install prodigy 1.9 on Windows 10 with Python 3.8. I couldn't find anything similar on the message board--sorry if it has been answered already and I missed the post.

The output is too long to post here, and I'm not sure what section where the error might be in. Let me know if you need to see anything additional.

Collecting spacy<2.3.0,>=2.2.3
  Using cached spacy-2.2.4.tar.gz (6.1 MB)
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\Gwenyth Wightman\AppData\Local\Programs\Python\Python38-32\python.exe' 'C:\Users\Gwenyth Wightman\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-build-env-hov9d58z\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel 'cython>=0.25' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'murmurhash>=0.28.0,<1.1.0' thinc==7.4.0
       cwd: None
  


    Building wheel for blis (setup.py): started
    Building wheel for blis (setup.py): finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\Gwenyth Wightman\AppData\Local\Programs\Python\Python38-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Gwenyth Wightman\\AppData\\Local\\Temp\\pip-install-86xpd28j\\blis\\setup.py'"'"'; __file__='"'"'C:\\Users\\Gwenyth Wightman\\AppData\\Local\\Temp\\pip-install-86xpd28j\\blis\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-wheel-3m0gh990'
         cwd: C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-install-86xpd28j\blis\
    Complete output (31 lines):
    BLIS_COMPILER? None
    


    clang -c C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-install-86xpd28j\blis\blis\_src\config\bulldozer\bli_cntx_init_bulldozer.c -o C:\Users\GWENYT~1\AppData\Local\Temp\tmpp2brv5vf\bli_cntx_init_bulldozer.o -O3 -std=c99 -D_POSIX_C_SOURCE=200112L -DBLIS_VERSION_STRING="0.5.1" -DBLIS_IS_BUILDING_LIBRARY -Iinclude\windows-x86_64 -I.\frame\3\ -I.\frame\ind\ukernels\ -I.\frame\1m\ -I.\frame\1f\ -I.\frame\1\ -I.\frame\include -IC:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-install-86xpd28j\blis\blis\_src\include\windows-x86_64
    ----------------------------------------
    ERROR: Failed building wheel for blis
    Running setup.py clean for blis
    Building wheel for srsly (setup.py): started
    Building wheel for srsly (setup.py): finished with status 'done'
    Created wheel for srsly: filename=srsly-1.0.2-cp38-cp38-win32.whl size=171064 sha256=52f5aa7797edb064ccb369e4415cf5e1a0ad4eb19310f4fae4a4ec35b0f58869
    Stored in directory: c:\users\gwenyth wightman\appdata\local\pip\cache\wheels\de\98\d2\7bcfd18543fcec187232f52d9e378de821ca1eeb5cc1cd5af0
  Successfully built cymem preshed murmurhash thinc srsly
  Failed to build blis
  Installing collected packages: setuptools, wheel, cython, cymem, murmurhash, preshed, numpy, blis, wasabi, srsly, catalogue, plac, tqdm, thinc
      Running setup.py install for blis: started
      Running setup.py install for blis: finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: 'C:\Users\Gwenyth Wightman\AppData\Local\Programs\Python\Python38-32\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Gwenyth Wightman\\AppData\\Local\\Temp\\pip-install-86xpd28j\\blis\\setup.py'"'"'; __file__='"'"'C:\\Users\\Gwenyth Wightman\\AppData\\Local\\Temp\\pip-install-86xpd28j\\blis\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-record-pgit7yld\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-build-env-hov9d58z\overlay' --compile --install-headers 'C:\Users\Gwenyth Wightman\AppData\Local\Temp\pip-build-env-hov9d58z\overlay\Include\blis'

Hi! The problem here seems to occur when installing spaCy, which is a dependency of Prodigy. Even though we provide wheels, it seems to not install Blis (a dependency of spaCy used for matrix multiplication) from a wheel and is trying to compile it instead. That fails, because your system doesn't seem to have a compiler set up.

Which version of Windows are you running and can you double-check that your Python installation is 64-bit? Your path says Python38-32, which might mean it's 32-bit? In that case, that would definitely be the problem and you want to use 64-bit Python.

I installed the 64 bit Python, and the output looks much different now. It looks like it was successful! Here's the final line of output. Does this look correct?

Successfully installed aiofiles-0.5.0 blis-0.4.1 cachetools-4.1.0 catalogue-1.0.0 certifi-2020.4.5.1 chardet-3.0.4 click-7.1.2 cymem-2.0.3 fastapi-0.44.1 h11-0.9.0 idna-2.9 murmurhash-1.0.2 numpy-1.18.4 peewee-3.13.3 plac-1.1.3 preshed-3.0.2 prodigy-1.9.9 pydantic-1.5.1 pyjwt-1.7.1 requests-2.23.0 spacy-2.2.4 srsly-1.0.2 starlette-0.12.9 thinc-7.4.0 toolz-0.10.0 tqdm-4.46.0 urllib3-1.25.9 uvicorn-0.11.5 wasabi-0.6.0 websockets-8.1

Also, I see this message:

Could not build wheels for toolz, since package 'wheel' is not installed.
Could not build wheels for peewee, since package 'wheel' is not installed.
Could not build wheels for starlette, since package 'wheel' is not installed.
Could not build wheels for setuptools, since package 'wheel' is not installed.
Installing collected packages: pydantic, click, h11, websockets, uvicorn, catalogue, plac, toolz, aiofiles, peewee, srsly, numpy, blis, cymem, murmurhash, preshed, wasabi, tqdm, idna, urllib3, chardet, certifi, requests, thinc, spacy, cachetools, starlette, fastapi, pyjwt, prodigy
    Running setup.py install for toolz: started
    Running setup.py install for toolz: finished with status 'done'
    Running setup.py install for peewee: started
    Running setup.py install for peewee: finished with status 'done'
    Running setup.py install for starlette: started
    Running setup.py install for starlette: finished with status 'done'

Is it an issue that the wheel package was not installed, since it was then able to successfully install toolz, peewee, and starlette?

Thank you!

This looks good, yes :slightly_smiling_face: The most important thing is that everything runs. Maybe just try running python -m spacy info and python -m prodigy stats on the command line – if both of those run and produce stats, this means that both spaCy and Prodigy were installed correctly.

Yep, all good now! Thanks so much.

Hi

I have been using Spacy in Docker for a while now and it seemed to work fine. But it fails currently with the same error for "cymem". FYI "python" is the base image I use, even though this shouldn't matter because it used to work perfectly all this while.

How do I resolve this?

Thanks in advance. Much appreciated.

Which Python version are you using here? If you're getting a compilation error, this typically indicates that you're not getting a pre-compiled wheel.

Python version: 3.8.3

This has been the version in which I have always been using Spacy, but building it now throws an error since Docker downloads and installs every single time.

What's the base container image? If it's an Alpine Linux image, you'll have to compile all of the dependencies, which might be messing things up for you. There could be other situations where you're somehow ending up with system config that it can't find a wheel for.

If you use a container based on Ubuntu 18.04 you'll probably be okay.