Trying to install anything with pip on macos and c

2020-05-09 01:02发布

问题:

I think I have a problem with my mac os system. Everything I try to install on it using pip I get the same errors over and over again, I have pasted just the lines that display an error to not overcrowd this thread:

Collecting murmurhash3
  Using cached https://files.pythonhosted.org/packages/b5/f4/1f9c4851667a2541bd151b8d9efef707495816274fada365fa6a31085a32/murmurhash3-2.3.5.tar.gz
Building wheels for collected packages: murmurhash3
  Running setup.py bdist_wheel for murmurhash3 ... error
  Complete output from command /usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-install-_4hr8w03/murmurhash3/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 /private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-wheel-k28wu_2e --python-tag cp37:
  running bdist_wheel
  running build
  running build_ext
  building 'mmh3' extension
  creating build
  creating build/temp.macosx-10.14-x86_64-3.7
  clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/usr/include -I/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c mmh3module.cpp -o build/temp.macosx-10.14-x86_64-3.7/mmh3module.o
  In file included from mmh3module.cpp:3:
  /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h:14:2: error: "Something's broken.  UCHAR_MAX should be defined in limits.h."
  #error "Something's broken.  UCHAR_MAX should be defined in limits.h."
   ^
  /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h:18:2: error: "Python's source code assumes C's unsigned char is an 8-bit type."
  #error "Python's source code assumes C's unsigned char is an 8-bit type."
   ^
  mmh3module.cpp:99:5: error: use of undeclared identifier 'memcpy'; did you mean 'wmemcpy'?
      memcpy(bytes, result, 16);
      ^~~~~~
      wmemcpy
  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/wchar.h:152:10: note: 'wmemcpy' declared here
  wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
           ^
  mmh3module.cpp:99:12: error: cannot initialize a parameter of type 'wchar_t *' with an lvalue of type 'char [16]'
      memcpy(bytes, result, 16);
             ^~~~~
  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/wchar.h:152:38: note: passing argument to parameter here
  wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
                                       ^
  4 errors generated.
  error: command 'clang' failed with exit status 1

  ----------------------------------------
  Failed building wheel for murmurhash3
  Running setup.py clean for murmurhash3
Failed to build murmurhash3
Installing collected packages: murmurhash3
  Running setup.py install for murmurhash3 ... error
    Complete output from command /usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-install-_4hr8w03/murmurhash3/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-record-7a15nstl/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_ext
    building 'mmh3' extension
    creating build
    creating build/temp.macosx-10.14-x86_64-3.7
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -I/usr/include -I/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c mmh3module.cpp -o build/temp.macosx-10.14-x86_64-3.7/mmh3module.o
    In file included from mmh3module.cpp:3:
    /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h:14:2: error: "Something's broken.  UCHAR_MAX should be defined in limits.h."
    #error "Something's broken.  UCHAR_MAX should be defined in limits.h."
     ^
    /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/include/python3.7m/Python.h:18:2: error: "Python's source code assumes C's unsigned char is an 8-bit type."
    #error "Python's source code assumes C's unsigned char is an 8-bit type."
     ^
    mmh3module.cpp:99:5: error: use of undeclared identifier 'memcpy'; did you mean 'wmemcpy'?
        memcpy(bytes, result, 16);
        ^~~~~~
        wmemcpy
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/wchar.h:152:10: note: 'wmemcpy' declared here
    wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
             ^
    mmh3module.cpp:99:12: error: cannot initialize a parameter of type 'wchar_t *' with an lvalue of type 'char [16]'
        memcpy(bytes, result, 16);
               ^~~~~
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/wchar.h:152:38: note: passing argument to parameter here
    wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
                                         ^
    4 errors generated.
    error: command 'clang' failed with exit status 1

    ----------------------------------------
Command "/usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-install-_4hr8w03/murmurhash3/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-record-7a15nstl/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/15/_mc1281d6kn_z8my6cz6dj740000gq/T/pip-install-_4hr8w03/murmurhash3/

On the other hand when I try to install lxml or requests everything works great. Any thoughts on where I have messed up?

回答1:

The library murmurhash3 is meant for Python >3.2 and at first you were attempting to compile it for Python 2. It doesn't work as the library has a C extension and Python 2 and 3 are not mutually API compatible.

Of course it would have been easier to notice, would murmurhash3 have checked your Python version in its setup.py.

Now that you're trying to install it to Python 3, it is clear that there is something very wrong with your compiler! The C standard requires that UCHAR_MAX is defined in <limits.h> by every single C compiler in existence and on any current personal computing architecture the UCHAR_MAX should be defined to 255, Macs included. Python.h checks this. Your C compiler defined neither UCHAR_MAX nor did it set it to 255 in limits.h but it still successfully included some limits.h. Your C compiler is utterly b0rken