poetry2nix
poetry2nix copied to clipboard
Flake: Failed building wheel for numpy
I try to use poetry2nix
with flakes. A simple project with only numpy fails.
poetry.toml
:
[tool.poetry]
name = "nix-flake-poetry-example"
version = "0.1.0"
description = ""
authors = ["me"]
[tool.poetry.dependencies]
python = "~3.9"
numpy = "^1.21.2"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
flake.nix
:
{
description = "A basic nix + flake + poetry example";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
utils.url = "github:numtide/flake-utils";
poetry2nix-src.url = "github:nix-community/poetry2nix";
};
outputs = { nixpkgs, utils, poetry2nix-src, self }: utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; overlays = [ poetry2nix-src.overlay ]; };
in
{
defaultPackage = pkgs.poetry2nix.mkPoetryApplication {
projectDir = ./.;
};
devShell = pkgs.mkShell {
# Add anything in here if you want it to run when we run `nix develop`.
shellHook = ''
'';
buildInputs = with pkgs; [
# Additional dev packages list here.
nixpkgs-fmt
(pkgs.poetry2nix.mkPoetryEnv {
projectDir = ./.;
editablePackageSources = {
my-app = ./src;
};
})
];
};
});
}
$nix develop
nix develop
error: builder for '/nix/store/cxhr8hpdzlcdwrw0jv9d9fnb0s3pzvwy-python3.9-numpy-1.21.2.drv' failed with exit code 1;
last 10 log lines:
> Exception information:
> Traceback (most recent call last):
> File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
> status = self.run(options, args)
> File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper
> return func(self, options, args)
> File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/commands/wheel.py", line 184, in run
> raise CommandError(
> pip._internal.exceptions.CommandError: Failed to build one or more wheels
> Removed build tracker: '/build/pip-req-tracker-vy7gr2dp'
For full logs, run 'nix log /nix/store/cxhr8hpdzlcdwrw0jv9d9fnb0s3pzvwy-python3.9-numpy-1.21.2.drv'.
error: 1 dependencies of derivation '/nix/store/hjk7gajrp8vys2r4x71xni6frl0zv7pv-python3-3.9.6-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/5hbf3s3ziv6jw19w3g79b41m179vv3zg-nix-shell-env.drv' failed to build
nix log /nix/store/cxhr8hpdzlcdwrw0jv9d9fnb0s3pzvwy-python3.9-numpy-1.21.2.drv
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pip-build-hook
Using pipBuildPhase
Using pipShellHook
Sourcing pip-install-hook
Using pipInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
unpacking source archive /nix/store/s8nnli5p13iv1vkfw1fxmgnk77akcrg7-numpy-1.21.2.zip
source root is numpy-1.21.2
setting SOURCE_DATE_EPOCH to timestamp 1629030744 of file numpy-1.21.2/numpy/_version.py
@nix { "action": "setPhase", "phase": "patchPhase" }
patching sources
@nix { "action": "setPhase", "phase": "configurePhase" }
configuring
no configure script, doing nothing
@nix { "action": "setPhase", "phase": "buildPhase" }
building
Executing pipBuildPhase
Removing pyproject.toml...
Creating a wheel...
WARNING: The directory '/homeless-shelter/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H >
Ignoring indexes: https://pypi.org/simple
Created temporary directory: /build/pip-ephem-wheel-cache-wzxto8a7
Created temporary directory: /build/pip-req-tracker-vy7gr2dp
Initialized build tracking at /build/pip-req-tracker-vy7gr2dp
Created build tracker: /build/pip-req-tracker-vy7gr2dp
Entered build tracker: /build/pip-req-tracker-vy7gr2dp
Created temporary directory: /build/pip-wheel-i34xpxgh
Processing /build/numpy-1.21.2
Created temporary directory: /build/pip-req-build-j8vzes0w
Added file:///build/numpy-1.21.2 to build tracker '/build/pip-req-tracker-vy7gr2dp'
Running setup.py (path:/build/pip-req-build-j8vzes0w/setup.py) egg_info for package from file:///build/numpy-1.21.2
Created temporary directory: /build/pip-pip-egg-info-dpe_l5pk
Running command python setup.py egg_info
Running from numpy source directory.
running egg_info
running build_src
build_src
creating /build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info
writing /build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/PKG-INFO
writing dependency_links to /build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/dependency_links.txt
writing entry points to /build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/entry_points.txt
writing top-level names to /build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/top_level.txt
writing manifest file '/build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/SOURCES.txt'
reading manifest file '/build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files found matching 'LICENSES_bundled.txt'
warning: no previously-included files found matching 'azure-*.yml'
no previously-included directories found matching 'doc/build'
no previously-included directories found matching 'doc/source/generated'
no previously-included directories found matching 'benchmarks/env'
no previously-included directories found matching 'benchmarks/results'
no previously-included directories found matching 'benchmarks/html'
no previously-included directories found matching 'benchmarks/numpy'
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
warning: no previously-included files matching '*.swp' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
warning: no previously-included files matching '*~' found anywhere in distribution
adding license file 'LICENSE.txt'
writing manifest file '/build/pip-pip-egg-info-dpe_l5pk/numpy.egg-info/SOURCES.txt'
Source in /build/pip-req-build-j8vzes0w has version 1.21.2, which satisfies requirement numpy==1.21.2 from file:///build/numpy-1.21.2
Removed numpy==1.21.2 from file:///build/numpy-1.21.2 from build tracker '/build/pip-req-tracker-vy7gr2dp'
Building wheels for collected packages: numpy
Created temporary directory: /build/pip-wheel-4_4qjkja
Building wheel for numpy (setup.py) ... Destination directory: /build/pip-wheel-4_4qjkja
Running command /nix/store/nki9ywqzbvz68vr75kn2r7g1q84f5agy-python3-3.9.6/bin/python3.9 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/build/pip-req-build-j8vzes0w/setup.py'"'"'; __file__='"'"'/build/pip-req-build-j8vzes0w/setup.py'"'"';f=getattr>
Running from numpy source directory.
Cythonizing sources
Processing numpy/random/_bounded_integers.pxd.in
Processing numpy/random/_bounded_integers.pyx.in
Traceback (most recent call last):
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 240, in <module>
main()
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 236, in main
find_process_files(root_dir)
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 227, in find_process_files
process(root_dir, fromfile, tofile, function, hash_db)
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 193, in process
processor_function(fromfile, tofile)
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 96, in process_tempita_pyx
process_pyx(pyxfile, tofile)
File "/build/pip-req-build-j8vzes0w/tools/cythonize.py", line 80, in process_pyx
raise RuntimeError(f'Building {VENDOR} requires Cython >= {required_version}'
RuntimeError: Building NumPy requires Cython >= 0.29.24, found 0.29.22 at /nix/store/wg6jkfz2hcdja51qzabz4cin7mjxk0mq-python3.9-Cython-0.29.22/lib/python3.9/site-packages/Cython/__init__.py
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/build/pip-req-build-j8vzes0w/setup.py", line 448, in <module>
setup_package()
File "/build/pip-req-build-j8vzes0w/setup.py", line 430, in setup_package
generate_cython()
File "/build/pip-req-build-j8vzes0w/setup.py", line 236, in generate_cython
raise RuntimeError("Running cythonize failed!")
RuntimeError: Running cythonize failed!
error
ERROR: Failed building wheel for numpy
Running setup.py clean for numpy
Running command /nix/store/nki9ywqzbvz68vr75kn2r7g1q84f5agy-python3-3.9.6/bin/python3.9 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/build/pip-req-build-j8vzes0w/setup.py'"'"'; __file__='"'"'/build/pip-req-build-j8vzes0w/setup.py'"'"';f=getattr>
Running from numpy source directory.
`setup.py clean` is not supported, use one of the following instead:
- `git clean -xdf` (cleans all files)
- `git clean -Xdf` (cleans all versioned files, doesn't touch
files that aren't checked into the git repo)
Add `--force` to your command to use it anyway if you must (unsupported).
ERROR: Failed cleaning build dir for numpy
Failed to build numpy
ERROR: Failed to build one or more wheels
Exception information:
Traceback (most recent call last):
File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 228, in _main
status = self.run(options, args)
File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper
return func(self, options, args)
File "/nix/store/2bkyr6n3nx6cj5hwrb67jlpikqd2r965-python3.9-pip-20.2.4/lib/python3.9/site-packages/pip/_internal/commands/wheel.py", line 184, in run
raise CommandError(
pip._internal.exceptions.CommandError: Failed to build one or more wheels
Removed build tracker: '/build/pip-req-tracker-vy7gr2dp'
Not sure of the cause, but this only affects numpy 1.21.2
. 1.21.1
and earlier build, so if possible you can pin to 1.21.1
as a workaround.
This also seems to be happening for scipy 1.7.1.
I should've looked more closely. Scipy 1.7.1 is failing because it cannot find Cython at all, not because Cython is too old. Logs attached, but I suspect this needs another ticket.