poetry2nix icon indicating copy to clipboard operation
poetry2nix copied to clipboard

Flake: Failed building wheel for numpy

Open feijoas opened this issue 3 years ago • 3 comments

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'

feijoas avatar Aug 24 '21 07:08 feijoas

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.

lunik1 avatar Sep 01 '21 14:09 lunik1

This also seems to be happening for scipy 1.7.1.

bbenne10 avatar Nov 03 '21 23:11 bbenne10

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.

out.txt

bbenne10 avatar Nov 04 '21 12:11 bbenne10