0.7.1 cannot be installed on darwin/arm64 with Python 3.9
See original GitHub issueWhat happened: pip install βfastparquet==0.7.1β
Failed, because it tried to install numpy
1.20.0 (even if a newer version [1.21.2] was already present in the venv) which failed to build from sources. This is because:
- there is no prebuilt package for
fastparquet
0.7.1 at PyPI fordarwin/arm64/cp39
- and
setup.py
usesoldest-supported-numpy
as a build dependency - and
oldest-supported-numpy
is currently broken fordarwin/arm64/cp39
because it points to a version (1.20.0) for which there is no prebuilt package at PyPI for the platform/python version combo - and building numpy from sources on
darwin/arm64
is notoriously fragile (and obviously broken for the numpy/OS/python version combo)
**Suggestion: Do not use the oldest-supported-numpy
meta-package. It is a well meant, but unfortunately unsustainable approach. It results in requiring 1 specific version for an platform/python version combo which is likely to break frequently. Just requiring a minimum version of numpy
for fastparquet
has IMHO higher probability of success. In this specific case, it wouldβve actually worked π.
What you expected to happen:
fasparquet 0.7.1. to be installed (without installing an older version of numpy).
Minimal Complete Verifiable Example: See above.
Environment:
- Dask version: N/A (I just use fastparquet with pandas)
- Python version:
3.9.5 (default, May 3 2021, 19:12:05) [Clang 12.0.5 (clang-1205.0.22.9)]
- Operating System:
ProductName: macOS
ProductVersion: 11.4
BuildVersion: 20F71
- Install method (conda, pip, source): pip (which tries to build wheel package)
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:12 (3 by maintainers)
Hi all, I am also trying to install fastparquet using poetry via
poetry add fastparquet
which sources from PyPI and just wanted to confirm that I am also receiving an error regarding the numpy version (see below). numpy 1.21.2 is already installed when trying to add fastparquet.error message details
EnvCommandErrorCommand [β/Users/christinapaton/opt/miniconda3/envs/survey2/bin/pipβ, βinstallβ, ββno-depsβ, βfile:///Users/christinapaton/Library/Caches/pypoetry/artifacts/d7/2b/8e/09320fd2f81069fcc2682cccc7e084152fdedd4e4e9e09fd9c2c7a2910/fastparquet-0.7.1.tar.gzβ] errored with the following return code 1, and output: Processing /Users/christinapaton/Library/Caches/pypoetry/artifacts/d7/2b/8e/09320fd2f81069fcc2682cccc7e084152fdedd4e4e9e09fd9c2c7a2910/fastparquet-0.7.1.tar.gz Building wheels for collected packages: fastparquet Building wheel for fastparquet (setup.py): started Building wheel for fastparquet (setup.py): finished with status βerrorβ ERROR: Command errored out with exit status 1: command: /Users/christinapaton/opt/miniconda3/envs/survey2/bin/python3.9 -u -c βimport io, os, sys, setuptools, tokenize; sys.argv[0] = β"β"β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ; file=ββ'ββ/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ;f = getattr(tokenize, β"βββopenβββββ, open)(file) if os.path.exists(file) else io.StringIO(βββββfrom setuptools import setup; setup()βββββ);code = f.read().replace(βββ"β\r\nββ'ββ, β"β"β\nββ'ββ);f.close();exec(compile(code, file, β"βββexecβββββ))β bdist_wheel -d /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-wheel-rv0mi906 cwd: /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/ Complete output (27 lines): Traceback (most recent call last): File β<string>β, line 1, in <module> File β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyβ, line 47, in <module> setup( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 152, in setup _install_setup_requires(attrs) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 147, in _install_setup_requires dist.fetch_build_eggs(dist.setup_requires) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 806, in fetch_build_eggs resolved_dists = pkg_resources.working_set.resolve( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 766, in resolve dist = best[req.key] = env.best_match( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1051, in best_match return self.obtain(req, installer) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1063, in obtain return installer(requirement) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 877, in fetch_build_egg return fetch_build_egg(self, req) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/installer.pyβ, line 80, in fetch_build_egg wheel.install_as_egg(dist_location) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 95, in install_as_egg self._install_as_egg(destination_eggdir, zf) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 103, in _install_as_egg self._convert_metadata(zf, destination_eggdir, dist_info, egg_info) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 124, in _convert_metadata os.mkdir(destination_eggdir) FileExistsError: [Errno 17] File exists: β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/.eggs/numpy-1.19.3-py3.9-macosx-10.9-x86_64.eggβ ---------------------------------------- ERROR: Failed building wheel for fastparquet Running setup.py clean for fastparquet ERROR: Command errored out with exit status 1: command: /Users/christinapaton/opt/miniconda3/envs/survey2/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = 'ββ"β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ; file=ββ'ββ/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ;f = getattr(tokenize, β"βββopenβββββ, open)(file) if os.path.exists(file) else io.StringIO(βββββfrom setuptools import setup; setup()βββββ);code = f.read().replace(βββ"β\r\nββ'ββ, β"β"β\nββ'ββ);f.close();exec(compile(code, file, β"βββexecβββββ))β clean --all cwd: /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w Complete output (27 lines): Traceback (most recent call last): File β<string>β, line 1, in <module> File β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyβ, line 47, in <module> setup( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 152, in setup _install_setup_requires(attrs) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 147, in _install_setup_requires dist.fetch_build_eggs(dist.setup_requires) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 806, in fetch_build_eggs resolved_dists = pkg_resources.working_set.resolve( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 766, in resolve dist = best[req.key] = env.best_match( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1051, in best_match return self.obtain(req, installer) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1063, in obtain return installer(requirement) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 877, in fetch_build_egg return fetch_build_egg(self, req) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/installer.pyβ, line 80, in fetch_build_egg wheel.install_as_egg(dist_location) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 95, in install_as_egg self._install_as_egg(destination_eggdir, zf) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 103, in _install_as_egg self._convert_metadata(zf, destination_eggdir, dist_info, egg_info) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 124, in _convert_metadata os.mkdir(destination_eggdir) FileExistsError: [Errno 17] File exists: β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/.eggs/numpy-1.19.3-py3.9-macosx-10.9-x86_64.eggβ ---------------------------------------- ERROR: Failed cleaning build dir for fastparquet Failed to build fastparquet Installing collected packages: fastparquet Running setup.py install for fastparquet: started Running setup.py install for fastparquet: finished with status βerrorβ ERROR: Command errored out with exit status 1: command: /Users/christinapaton/opt/miniconda3/envs/survey2/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = 'ββ"β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ; file=ββ'ββ/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ;f = getattr(tokenize, β"βββopenβββββ, open)(file) if os.path.exists(file) else io.StringIO(βββββfrom setuptools import setup; setup()βββββ);code = f.read().replace(βββ"β\r\nββ'ββ, β"β"β\nββ'ββ);f.close();exec(compile(code, file, β"βββexecβββββ))β install --record /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-record-bcplr9pw/install-record.txt --single-version-externally-managed --compile --install-headers /Users/christinapaton/opt/miniconda3/envs/survey2/include/python3.9/fastparquet cwd: /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/ Complete output (27 lines): Traceback (most recent call last): File β<string>β, line 1, in <module> File β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyβ, line 47, in <module> setup( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 152, in setup _install_setup_requires(attrs) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/init.pyβ, line 147, in _install_setup_requires dist.fetch_build_eggs(dist.setup_requires) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 806, in fetch_build_eggs resolved_dists = pkg_resources.working_set.resolve( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 766, in resolve dist = best[req.key] = env.best_match( File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1051, in best_match return self.obtain(req, installer) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/pkg_resources/init.pyβ, line 1063, in obtain return installer(requirement) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/dist.pyβ, line 877, in fetch_build_egg return fetch_build_egg(self, req) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/installer.pyβ, line 80, in fetch_build_egg wheel.install_as_egg(dist_location) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 95, in install_as_egg self._install_as_egg(destination_eggdir, zf) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 103, in _install_as_egg self._convert_metadata(zf, destination_eggdir, dist_info, egg_info) File β/Users/christinapaton/opt/miniconda3/envs/survey2/lib/python3.9/site-packages/setuptools/wheel.pyβ, line 124, in _convert_metadata os.mkdir(destination_eggdir) FileExistsError: [Errno 17] File exists: β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/.eggs/numpy-1.19.3-py3.9-macosx-10.9-x86_64.eggβ ---------------------------------------- ERROR: Command errored out with exit status 1: /Users/christinapaton/opt/miniconda3/envs/survey2/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = 'ββ"β/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ; file=ββ'ββ/private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-req-build-9ud3vg6w/setup.pyββ'ββ;f = getattr(tokenize, β"βββopenβββββ, open)(file) if os.path.exists(file) else io.StringIO(βββββfrom setuptools import setup; setup()βββββ);code = f.read().replace(βββ"β\r\nββ'ββ, β"β"β\nββ'ββ);f.close();exec(compile(code, file, β"βββexecβββ"β))β install --record /private/var/folders/_l/23fh_hz93hnb8jphrxrrl7dw0000gn/T/pip-record-bcplr9pw/install-record.txt --single-version-externally-managed --compile --install-headers /Users/christinapaton/opt/miniconda3/envs/survey2/include/python3.9/fastparquet Check the logs for full command output.
at ~/.poetry/lib/poetry/utils/env.py:1180 in run 1176β output = subprocess.check_output( 1177β cmd, stderr=subprocess.STDOUT, **kwargs 1178β ) 1179β except CalledProcessError as e: β 1180β raise EnvCommandError(e, input=input) 1181β 1182β return decode(output) 1183β 1184β def execute(self, bin, *args, **kwargs):
Let me summarise the problem for myself, to see if I understand the situation clearly.
Do I have it right?
I wonder, is conda a possible avenue for you, if only to create the wheel you need?