#+title: Environnement python avec nix #+filetags: #nix python * Projet en Python [[https://nixos.wiki/wiki/Python#Package_and_development_shell_for_a_python_project][Instructions simples ici]] Il faut donc setup.py: #+begin_src python #!/usr/bin/env python from setuptools import setup, find_packages setup(name='demo-flask-vuejs-rest', version='1.0', # Modules to import from other scripts: packages=find_packages(), # Executables scripts=["web_interface.py"], ) #+end_src Et 2 fichiers .nix, le premier pour les dépendances #+begin_src sh { lib, python3Packages }: with python3Packages; buildPythonApplication { pname = "demo-flask-vuejs-rest"; version = "1.0"; propagatedBuildInputs = [ flask ]; src = ./.; } #+end_src et le défaut #+begin_example { pkgs ? import <nixpkgs> {} }: pkgs.callPackage ./derivation.nix {} #+end_example Il ne reste plus qu'à le construire #+begin_example nix-build result/bin/lol.py #+end_example * Python libraries On package l'exécutable python avec les libraries. Mettre dans =default.nix= #+begin_src nix with (import <nixpkgs> {}); let my-python-packages = python-packages: with python-packages; [ pandas requests # other python packages you want ]; in python3.withPackages my-python-packages #+end_src Puis #+begin_src sh nix-build default.nix result/bin/python >>> import pandas #+end_src Si on veut juste un shell, mettre dans =shell.nix= #+begin_src sh { pkgs ? import <nixpkgs> {} }: let my-python-packages = ps: with ps; [ pandas pysam # other python packages ]; my-python = pkgs.python3.withPackages my-python-packages; in my-python.env #+end_src