From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:403:4789::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id gHWmCRR7JmVuZgEAG6o9tA:P1 (envelope-from ) for ; Wed, 11 Oct 2023 12:38:12 +0200 Received: from aspmx1.migadu.com ([2001:41d0:403:4789::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id gHWmCRR7JmVuZgEAG6o9tA (envelope-from ) for ; Wed, 11 Oct 2023 12:38:12 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D1C6C41398 for ; Wed, 11 Oct 2023 12:38:11 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lRA2VlOQ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1697020691; a=rsa-sha256; cv=none; b=g1OiASxyxWy1b7fyN6L5v4oVnOHCbdwQR8kz9sL+ZRAxc+U7zMMslLNYKuzFRhm44S/duu Thpqnk6T8CHjAj787K7sQ3Zo9w7W8RwB5rB/z+9CDFXCeFoHiUOFOgPB4ypf2sfFVa+foD AZ8xKrOzQ8hbuMQzkbP+H5yQ5vdD56mqwZjtkTCDvS3j+Y4/53DAY6nvytEJDQqFBHvzUC Gm/BZO/qedmLcM0l7oT5JR3Ol2Jqewr8dkZ0NxX3p9ONQz8uDJnFsh67eYychhwC+HQc7P qDDKU1eaDhDuif3DnmilUFMy9Q3Bb5j2CcjoJGkFtYD1EQjT5Ogx68xiVuZWtA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lRA2VlOQ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1697020691; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=u367agFWnBd1G4pQpIf9NO5b85x77U2Y1LAlkuOlVG8=; b=Pah08PSaZhCYaRFCHfDGueKQGSUwq/kPnqqwTG/6Si1Uvp08JCjF5zuGrnIJLVF05pbsgQ EezkleXXT56chNLPRSojBoiMcAv/L97SnchJOv0+Yrl3UziTfrBTSJcv4LD4r66of9nrTG hD9YvJC7iN5YBz3MbYijlsC+nURNdwESFxN+j9zZXAS9B3BjeiNQuHiCnjwx8B9GxMpWoF uOUTE4u0WH8DzK3eo0N5izJ8ODA6oNFgnakEXA71a42uuiq2cI9Hf61sTNccwco20tA2K3 L7kPA7HgfNvzM+95nCSqDdwoTnw2ZSGPb3xY+h5bZW3c5fs5IbtwwPnaKn1rGA== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qqWb3-0004rP-B7; Wed, 11 Oct 2023 06:37:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qqWaz-0004UJ-Kz for help-guix@gnu.org; Wed, 11 Oct 2023 06:37:41 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qqWaw-0006D8-OB for help-guix@gnu.org; Wed, 11 Oct 2023 06:37:40 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4053e6e8ca7so19854935e9.1 for ; Wed, 11 Oct 2023 03:37:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697020657; x=1697625457; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=u367agFWnBd1G4pQpIf9NO5b85x77U2Y1LAlkuOlVG8=; b=lRA2VlOQT7+NHr5v32CRiqWVo+AQ7b3JCwi6+Xtyur+WCjPNOS3aXSf1PBtOuGOzV0 02763CnnG4Cq4GgttWDhqyCTuIEiRSLTyJpX9gBG1y38IJQG7I61MBdHK0/8C22twwdL vgXMdczJQtbLP5aK4mLOhdPfVxrgI7UAfezW8Bw1C6yDpk+o7VLGfnD1C7KRFUKrLDjO ndTbqfVxyG+sRVtRwu/gD/FbMWC4cAh1rMnbN5VWnhqdigA+T/cpjoVJnF70jW56V1uL 2HhDoy7h5k8/snb+RzvxgLCkbYDEmM34W8mHT4jZcn1UebPVm31Gi8ffkS6plC3lDj6k jLOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697020657; x=1697625457; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=u367agFWnBd1G4pQpIf9NO5b85x77U2Y1LAlkuOlVG8=; b=F0a2co4Ii5qzQRPa53rjAFRD+hdKrWA6p566QYZGogbFt+ChOAjSwQolMk/iIaJlyA CZ7O0pGqCTuWgRhSRxxm/H3DQHsJ0Yu2oUQJKpF8dwrNvkG2MQ3C2VcNKvnsGZLqBNWq M6hbAAcRD8xcT95X86b19REXtxkQ6xSdiaYE4wC/ODQwBLH07qYf5cSGDvBlH0VcV9Ei y333DT4QMrtbeAKgTy7g1VFMKIXytuNYSjZ5CncSO0SFKOO0mj0bo1uxeIT89w42RWJD 4aDwG1l3gjAp658PYlWZAOwVdgSl6kk7VIoLUvR1K/oFgsWLLd6Bnh0L7M0A9ZDqKql4 ZXkQ== X-Gm-Message-State: AOJu0Yw3KORGzIwBc6Qt4pQghTRgrt5H5jJP4mYajsUKyja4GZ9Psp45 ZQdA3sAZcvXv/grWnRpUGALYxf/aXZY= X-Google-Smtp-Source: AGHT+IGrEQOrkAyAD5qI6sz7/GrP1r8+JH+Q/Aqf6xY5NUHaq4EUUrD8RJUtWKDOd5cfaj4OUd2OmQ== X-Received: by 2002:a5d:4b92:0:b0:31f:899b:a47 with SMTP id b18-20020a5d4b92000000b0031f899b0a47mr16699478wrt.4.1697020657380; Wed, 11 Oct 2023 03:37:37 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id v14-20020a05600c214e00b00401c595fcc7sm18676737wml.11.2023.10.11.03.37.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 03:37:37 -0700 (PDT) From: Simon Tournier To: Lasse =?utf-8?Q?Schl=C3=B6r?= , help-guix@gnu.org Subject: Re: Replicable environment with Python packages missing from Guix In-Reply-To: References: Date: Wed, 11 Oct 2023 12:12:46 +0200 Message-ID: <86fs2hjwm9.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=zimon.toutoune@gmail.com; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: help-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Scanner: mx1.migadu.com X-Migadu-Spam-Score: -9.53 X-Spam-Score: -9.53 X-Migadu-Queue-Id: D1C6C41398 X-TUID: 4T8kC7hoq63v Hi, On Thu, 05 Oct 2023 at 15:00, Lasse Schl=C3=B6r wrote: > Currently, no PsychoPy package exists for Guix, and so I attempted to > write my own Guix packages for PsychoPy and those of its dependencies > that don't exist as Guix packages either. Well, sadly Guix cannot fix the world. :-) Here, PsychoPy is poorly packaged in PyPI, thus there is no easy way to write Guix recipe for it. --8<---------------cut here---------------start------------->8--- $ guix import pypi PsychoPy -r Starting download of /tmp/guix-file.6lTxL2 >From https://files.pythonhosted.org/packages/16/17/a73ebae6cfcbd6f4cf094fba= 59b17f1ca1b03b6a8c0afdaa11468bc3fe62/psychopy-2023.2.3.tar.gz... =E2=80=A63.2.3.tar.gz 34.3MiB 550KiB/s 01:04 =E2=96=95=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=8F 100.0% guix import: warning: Cannot guess requirements from source archive: no req= uires.txt file found. (define-public python-psychopy (package (name "python-psychopy") (version "2023.2.3") (source (origin (method url-fetch) (uri (pypi-uri "psychopy" version)) (sha256 (base32 "0mf3gas4892108c7y0n8sl7phkl6w2z4lgymb4n0d6h9p6g58mpq")))) (build-system pyproject-build-system) (home-page "") (synopsis "PsychoPy provides easy, precise, flexible experiments in behavioural = sciences") (description "@code{PsychoPy} provides easy, precise, flexible experiments in behav= ioural sciences") (license #f))) --8<---------------cut here---------------end--------------->8--- All, and I do not see that packages in any of extra scientific channels: https://hpc.guix.info/channels/ but I can have overlooked. > As a workaround, I have instead written a manifest file that provides > a fixed version of Python, Pip, and some of PsychoPy's dependencies. I > can use this to start a container with `guix time-machine [=E2=80=A6] -- = shell > --container --share=3Dpath/to/persistent/.local=3D/home/username/.local > [=E2=80=A6]`, which has a persistent `~/.local` directory, into which the > correct version of PsychoPy can be installed via `python3 -m pip > install -r path/to/requirements.txt`. Making `~/.local` persistent > allows to start new instances of this container without having to > re-install PsychoPy every time. If I understand correctly, here the only thing you will be able to reproduce from one machine to another is =E2=80=99python3=E2=80=99. But yo= u have no guarantee that you will be able to reproduce ~/.local elsewhere. Well, based on my poor knowledge of =E2=80=99pip=E2=80=99and PyPI. However, that=E2=80=99s already good. Because it means that if your computations work in an isolated environment created with =E2=80=9Cguix she= ll --container=E2=80=9D then it means there is no leak to system-wide librarie= s. And, to my knowledge, this kind of packages are easier to package. ;-) > Of course, this doesn't feel as elegant as the purely functional Guix > way of doing things. I am sure others before me have had similar > situations. Thus, my question is: Is there a known/preferred/elegant > way of creating replicable Guix environments with fixed versions of > Python packages when these packages do not exist as Guix packages? The only way to have replicable Guix environment is to fully control all the chain, and thus, it means to have a Guix recipe for the packages. However, as you are pointing, when packages are missing, I accept the trade-off to work with language-specific package manager knowing that I loose some guarantees for reproducing. Trade-off. :-) Cheers, simon