Jump to content

Talk:Python: Difference between revisions

From Official NixOS Wiki
Latest comment: 25 April by Danbulant in topic Update the packaging section
No edit summary
 
(One intermediate revision by one other user not shown)
Line 40: Line 40:
== Full ==
== Full ==


Can we add a section about Full and non-Full versions? Whats the difference and in which situation use on or the other?
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 <code>setup.py</code> format
 
Wiki says that the result of <code>main.py</code> 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:
 
<syntaxhighlight lang="nix">
{ 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;
}
</syntaxhighlight> [[User:Danbulant|Danbulant]] ([[User talk:Danbulant|talk]]) 10:07, 25 April 2026 (UTC)

Latest revision as of 10:07, 25 April 2026

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