[Nix-dev] Using/packaging Python-modules
    Roland Koebler 
    rk-list at simple-is-better.org
       
    Wed Dec 21 15:18:55 CET 2016
    
    
  
Hi,
I'm trying to create nix-packages from some of my own Python-modules.
So, I followed the Nixpkgs manual, but it did not work as described:
Section 8.10.1.2.1. Python packaging on Nix:
- 1st shell.nix-example: local toolz package [1]
  
  1. variable "licenses" is not found:
     user at host:~/tmp/_$ nix-shell 
     error: undefined variable ‘licenses’ at /home/rk/tmp/_/shell.nix:15:15
     (use ‘--show-trace’ to show detailed location information)
  2. after removing the license-line, I can start a nix-shell, but the toolz
     package is not available:
     user at host:~/tmp$ nix-shell
     ...
     [nix-shell:~/tmp]$ which python3.5
     /nix/store/c5c9fs9vh12rr0lvbss1a813xwlwv0zh-python3-3.5.2/bin/python3.5
     [nix-shell:~/tmp]$ python3.5
     Python 3.5.2 (default, Jun 25 2016, 21:38:40)
     [GCC 5.4.0] on linux
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import toolz
     Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
     ImportError: No module named 'toolz'
- 2nd shell.nix-examle: local toolz package + numpy [2]
  1. variable "licenses" is not found (as above)
  2. tests fail:
	...
	======================================================================
	ERROR: exceptions (unittest.loader._FailedTest)
	----------------------------------------------------------------------
	AttributeError: module 'toolz.curried' has no attribute 'exceptions'
	======================================================================
	ERROR: exceptions (unittest.loader._FailedTest)
	----------------------------------------------------------------------
	AttributeError: module 'toolz.curried' has no attribute 'exceptions'
	----------------------------------------------------------------------
	Ran 2 tests in 0.001s
	FAILED (errors=2)
	builder for ‘/nix/store/pa77cfky1b0f2knzn2k2czdaxz6wdym6-python3.5-toolz-0.7.4.drv’ failed with exit code 1
	cannot build derivation ‘/nix/store/pi89rb0v178avb0jjdm352vad42a1f7a-python3-3.5.2-env.drv’: 1 dependencies couldn't be built
	error: build of ‘/nix/store/pi89rb0v178avb0jjdm352vad42a1f7a-python3-3.5.2-env.drv’ failed
	/home/user/.nix-profile/bin/nix-shell: failed to build all dependencies
So, how can I develop with local Python packages or package local Python modules?
Additionally, I've found several broken links:
  I found several broken links:
  - buildPythonPackage https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/python-modules/generic/default.nix
  - http://pythonhosted.org/setuptools/setuptools.html#development-mode
    should probably point to http://setuptools.readthedocs.io/en/latest/setuptools.html#development-mode
  - http://nixos.org/nixpkgs/manual/#ssec-python-development
    This anchor des not exist; maybe #development-mode is meant.
  - A link-checker (https://validator.w3.org/checklink) reported even more broken links.
best regards
Roland
[1]
with import <nixpkgs> {};
pkgs.python35Packages.buildPythonPackage rec {
  name = "toolz-${version}";
  version = "0.7.4";
  src = pkgs.fetchurl{
    url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
    sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
  };
  meta = {
    homepage = "http://github.com/pytoolz/toolz/";
    description = "List processing tools and functional utilities";
    license = licenses.bsd3;
    maintainers = with maintainers; [ fridh ];
  };
}
[2]
with import <nixpkgs> {};
( let
    toolz = pkgs.python35Packages.buildPythonPackage rec {
      name = "toolz-${version}";
      version = "0.7.4";
      src = pkgs.fetchurl{
        url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
        sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
      };
      meta = {
        homepage = "http://github.com/pytoolz/toolz/";
        description = "List processing tools and functional utilities";
        license = licenses.bsd3;
        maintainers = with maintainers; [ fridh ];
      };
    };
  in pkgs.python35.withPackages (ps: [ps.numpy toolz])
).env
    
    
More information about the nix-dev
mailing list