Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to install requirements.txt on MacOS arm64: ERROR: Could not build wheels for multidict, which is required to install pyproject.toml-based projects #1

Open
jwmatthews opened this issue Mar 8, 2024 · 1 comment

Comments

@jwmatthews
Copy link
Contributor

jwmatthews commented Mar 8, 2024

I'm hitting the below on MacOS arm64

python3 -m venv env 
source env/bin/activate
pip3 install -r ./requirements.txt  
...

Building wheels for collected packages: frozenlist, multidict, watchdog, yarl
  Building wheel for frozenlist (pyproject.toml) ... done
  Created wheel for frozenlist: filename=frozenlist-1.4.0-cp312-cp312-macosx_13_0_arm64.whl size=46117 sha256=8646332a10550c972c9dad4d0d3571445311784fed9a9b7a2d6476519a418089
  Stored in directory: /Users/jmatthews/Library/Caches/pip/wheels/f1/9c/94/9386cb0ea511a93226456388d41d35f1c24ba15a62ffd7b1ef
  Building wheel for multidict (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for multidict (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [200 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-13.0-arm64-cpython-312
      creating build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/_multidict_py.py -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/_abc.py -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/__init__.py -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/_multidict_base.py -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/_compat.py -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      running egg_info
      writing multidict.egg-info/PKG-INFO
      writing dependency_links to multidict.egg-info/dependency_links.txt
      writing top-level names to multidict.egg-info/top_level.txt
      reading manifest file 'multidict.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files found matching 'multidict/_multidict.html'
      warning: no previously-included files found matching 'multidict/*.so'
      warning: no previously-included files found matching 'multidict/*.pyd'
      warning: no previously-included files found matching 'multidict/*.pyd'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE'
      writing manifest file 'multidict.egg-info/SOURCES.txt'
      /private/var/folders/l1/1b7gzz8n02b5nrtdq51bnj4r0000gn/T/pip-build-env-phylfbyk/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'multidict._multilib' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'multidict._multilib' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'multidict._multilib' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'multidict._multilib' to be distributed and are
              already explicitly excluding 'multidict._multilib' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      copying multidict/__init__.pyi -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      copying multidict/py.typed -> build/lib.macosx-13.0-arm64-cpython-312/multidict
      running build_ext
      building 'multidict._multidict' extension
      creating build/temp.macosx-13.0-arm64-cpython-312
      creating build/temp.macosx-13.0-arm64-cpython-312/multidict
      clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk -I/Users/jmatthews/git/jwmatthews/model-comparison/env/include -I/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.12/include/python3.12 -c multidict/_multidict.c -o build/temp.macosx-13.0-arm64-cpython-312/multidict/_multidict.o -O2 -std=c99 -Wall -Wsign-compare -Wconversion -fno-strict-aliasing -pedantic
      In file included from multidict/_multidict.c:9:
      multidict/_multilib/iter.h:225:20: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
      multidict_iter_init()
                         ^
                          void
      In file included from multidict/_multidict.c:10:
      multidict/_multilib/views.h:388:21: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
      multidict_views_init()
                          ^
                           void
      multidict/_multidict.c:458:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "getall", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:458:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "getall", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:458:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[7]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "getall", 0};
                                                           ^~~~~~~~
      multidict/_multidict.c:503:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "getone", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:503:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "getone", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:503:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[7]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "getone", 0};
                                                           ^~~~~~~~
      multidict/_multidict.c:538:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "get", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:538:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "get", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:538:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[4]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "get", 0};
                                                           ^~~~~
      multidict/_multidict.c:712:5: warning: 'UsingDeprecatedTrashcanMacro' is deprecated [-Wdeprecated-declarations]
          Py_TRASHCAN_SAFE_BEGIN(self);
          ^
      /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/object.h:551:9: note: expanded from macro 'Py_TRASHCAN_SAFE_BEGIN'
              UsingDeprecatedTrashcanMacro cond=1; \
              ^
      /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/object.h:548:1: note: 'UsingDeprecatedTrashcanMacro' has been explicitly marked deprecated here
      Py_DEPRECATED(3.11) typedef int UsingDeprecatedTrashcanMacro;
      ^
      /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:317:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      multidict/_multidict.c:780:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "add", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:780:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "add", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:780:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[4]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "add", 0};
                                                           ^~~~~
      multidict/_multidict.c:839:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "setdefault", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:839:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "setdefault", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:839:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[11]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "setdefault", 0};
                                                           ^~~~~~~~~~~~
      multidict/_multidict.c:875:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "popone", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:875:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "popone", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:875:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[7]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "popone", 0};
                                                           ^~~~~~~~
      multidict/_multidict.c:922:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "pop", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:922:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "pop", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:922:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[4]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "pop", 0};
                                                           ^~~~~
      multidict/_multidict.c:970:37: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
          static _PyArg_Parser _parser = {NULL, _keywords, "popall", 0};
                                          ^~~~
      /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stddef.h:89:16: note: expanded from macro 'NULL'
      #  define NULL ((void*)0)
                     ^~~~~~~~~~
      multidict/_multidict.c:970:43: warning: incompatible pointer types initializing 'const char *' with an expression of type 'const char *const[3]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "popall", 0};
                                                ^~~~~~~~~
      multidict/_multidict.c:970:54: warning: incompatible pointer types initializing 'const char *const *' with an expression of type 'char[7]' [-Wincompatible-pointer-types]
          static _PyArg_Parser _parser = {NULL, _keywords, "popall", 0};
                                                           ^~~~~~~~
      multidict/_multidict.c:1684:18: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
      PyInit__multidict()
                       ^
                        void
      20 warnings and 8 errors generated.
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for multidict
  Building wheel for watchdog (pyproject.toml) ... done
  Created wheel for watchdog: filename=watchdog-3.0.0-cp312-cp312-macosx_13_0_arm64.whl size=91548 sha256=138b3aaa363bb2c562415d40b318c8f33e81a54228fef67047eb1df2b80363ad
  Stored in directory: /Users/jmatthews/Library/Caches/pip/wheels/34/85/49/7c56ff9848243b6d10a9a64c69c6eaa828d3c4eb5a19c1c042
  Building wheel for yarl (pyproject.toml) ... done
  Created wheel for yarl: filename=yarl-1.9.2-cp312-cp312-macosx_13_0_arm64.whl size=61914 sha256=3b243da2cc0fbd90ef0c9ee222ff582a06ea28c32e7680ca1eed430be9ed1650
  Stored in directory: /Users/jmatthews/Library/Caches/pip/wheels/84/e3/6a/7d0fa1abee8e4aa39922b5bd54689b4b5e4269b2821f482a32
Successfully built frozenlist watchdog yarl
Failed to build multidict
ERROR: Could not build wheels for multidict, which is required to install pyproject.toml-based projects

Full output: https://gist.github.com/jwmatthews/c52c044f7417b4009afed7d9bdda5e59#file-gistfile1-txt-L504

@jwmatthews
Copy link
Contributor Author

This is the workaround I used to move past this:

MULTIDICT_NO_EXTENSIONS=1 pip3 install -r ./requirements.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant