Jump to content

Talk:Python

From Official NixOS Wiki
Revision as of 10:07, 25 April 2026 by Danbulant (talk | contribs) (Update the packaging section: new section)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Latest comment: 25 April by Danbulant in topic Update the packaging section

Conda

conda-env does not exist after entering the conda-shell without first calling conda-install, so I think the wiki is missleading here, or the package has a bug. conda-shell, conda-install have no effect and nothing happens. Bash just says it can't find that command.

shellHook explanation

It's not clear what the meaning of all the `shellHook` stuff is for, esp. the unset SOURCE_DATE_EPOCH bit.

How to use specific Python version?

I'm working on a project where we're using a specific patch version of Python. How would I set this up? This uses a Python fork, but I'm looking for a specific version of the official Python package.

L0b0 (talk) 22:01, 19 September 2021 (UTC)Reply

Flake example for use with nix develop

I was trying to get python with packages as defined by a flake, and found https://dev.to/deciduously/workspace-management-with-nix-flakes-jupyter-notebook-example-2kke a useful discussion. I propose to add an example:

{
  description = "Python environment";
  inputs.nixpkgs.url = "nixpkgs/nixos-22.11";
  outputs = {nixpkgs, ...}: let
    system = "x86_64-linux";
    pkgs = import nixpkgs {inherit system;};
  in {
    devShells.${system}.default = pkgs.mkShell {
      buildInputs = [
        (pkgs.python3.withPackages (p: [
          p.requests
        ]))
      ];
      shellHook = "python";
    };
  };
}

Full

Can we add a section about Full (e.g. python312Full) and non-Full (e.g. python312) versions? Whats the difference and in which situation use on or the other?

Update the packaging section

Seems like the format was updated and the wiki is no longer accurate? Specifically the setup.py format

Wiki says that the result of main.py will be in bin/app.py but the resulting filename isn't being renamed, so it should be main.py

Setuptools now aren't included by default and need to be explicitly mentioned, and pyproject variable set to true, so the example nix file would look something like this:

{ pkgs ? import <nixpkgs> { } }:

pkgs.python3Packages.buildPythonApplication {
  pname = "myFlaskApp";
  version = "0.1.0";

  src = ./src;

  build-system = with pkgs.python3Packages; [
    setuptools
  ];
  propagatedBuildInputs = with pkgs.python3Packages; [
    flask
  ];

  pyproject = true;
}

Danbulant (talk) 10:07, 25 April 2026 (UTC)Reply