Noisemaker: Difference between revisions

imported>Mic92
fix markup
imported>Raboof
how to use shell.nix instead of venv with a nixpkgs that has a recent tensorflow
 
Line 1: Line 1:
https://noisemaker.readthedocs.io/en/latest/
https://noisemaker.readthedocs.io/en/latest/


At the time of writing noisemaker is still on tensorflow 1.3, which isn't available for python 3.7 (only up to 3.6, https://pypi.org/project/tensorflow/1.3.0/#files). Let's just use tensorflow 2 instead (https://github.com/aayars/py-noisemaker/pull/4):
Right now nixpkgs contains tensorflow 2.1.0 but has it disabled for python 3.8 (as it's not officially supported upstream either).  


<syntaxHighlight lang=console>
== with tensorflow 2.3.0 from a branch ==
$ git clone git@github.com:aayars/py-noisemaker py-noisemaker
 
$ cd py-noisemaker
Using nixpkgs from https://github.com/NixOS/nixpkgs/pull/95824 , you can update setup.py to change '==' versions to '>=' for the dependencies for which NixOS is shipping newer versions, and then use the following shell.nix:
$ hub remote add raboof
 
$ git fetch raboof
<syntaxHighlight lang=nix>
$ git checkout tensorflow2
with import <nixpkgs> {};
with python3Packages;
 
buildPythonPackage rec {
  name = "noisemaker";
  src = /path/to/py-noisemaker;
  propagatedBuildInputs = [
    virtualenv
    pillow
    tensorflow_2
    click
  ];
}
</syntaxHighlight>
</syntaxHighlight>


Right now nixpkgs contains tensorflow 2.1.0 but has it disabled for python 3.8 (as it's not officially supported upstream either). 'python3 -m venv venv' doesn't seem to work with python 3.7, so I'm sticking with 3.8.
== with tensorflow 2.3.0 from pip in a venv ==
 
'python3 -m venv venv' doesn't seem to work with python 3.7, so I'm sticking with 3.8.


noisemaker wants exactly version 6.2.0 of Pillow. The pillow in nixpkgs is a different version, so this will be fetched and built with setup.py. To make sure it can correctly find the C libraries it uses, we use fshUserEnv and add some development headers:
noisemaker wants exactly version 6.2.0 of Pillow. The pillow in nixpkgs is a different version, so this will be fetched and built with setup.py. To make sure it can correctly find the C libraries it uses, we use fshUserEnv and add some development headers:
Line 55: Line 69:


(this will generate 'noise.png')
(this will generate 'noise.png')
== Next steps ==
It'd be nice to package noisemaker more 'nix natively'. Looking into installing tensorflow from nix instead of pip.