help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Reproducing a Python project environment (using guix inferiors)


From: branjam4
Subject: Reproducing a Python project environment (using guix inferiors)
Date: Sat, 28 Nov 2020 18:09:30 -0800

Hello all!

Some time before I started using guix I worked through Python examples
within this book[1] for school. There were some differences in the
packages I installed and the listed requirements for the book (pseudo
manifest at [2]) which made things difficult for me as a (then) new
programmer.

Believing guix could more faithfully/cleanly reproduce the environment
from the book than my former approach using pip, I:
+ imported/wrote definitions for packages not in guix
+ wrote inferiors for older versions of packages that were in guix.

I'm not sure what the rhyme or reason is, but most of my inferior
attempts failed with this backtrace[3]. A couple were successful, as you
can see in this table[4].

Usually I've had good luck consulting the manual, mailing lists, and IRC
logs, but I'm at a bit of a loss this time since the nature of others'
inferior issues seems different from mine (and were probably fixed).
I've tried with the following (non-inferior) commits on a foreign
distro:
+ 71507435225f10d8d944ba183cbcc77ef953e0e5
+ f816deb9055669deaca59ac7652943adf7f11bb1
+ 0d7c95445c (and some commits shortly after this one)

Since the results consistently match[4], I supposed the issue might be
with the commits I've selected for the inferiors. But at this point I
thought I should ask for help in case I'm too far off.

>From what I can gather, inferiors are the recommended way to declare
packages defined in older revisions of guix.

But how would I know what a "good" guix inferior commit is for all of
these packages?
Would using the definitions instead of asking guix to reproduce
five different worlds for one package each be an anti-pattern?
Is my issue related to being on a foreign distro, thus Guix System users
wouldn't know much about this problem?

Even though I'm mentioning this specific frustration, I enjoyed the
learning process getting to this point and want to express my
appreciation. Despite interacting with clojure and emacs lisp for at
least a year, guix/guile finally got me to use quoting, let, and lambda
in a non-trivial way. Thus the otherwise tedious work of generating five
different channel/inferior definitions as per the example in the manual
was actually a breeze!

Thanks for your help and hard work,
--Brandon

[1] Complex Network Analysis Using Python, by Dmitry Zinoviev

[2] For some of the versioned packages, I commented the newest commit
prior to guix bumping that package, which I would use for an inferior.
#+BEGIN_SRC scheme
(specifications->manifest ;inferior commit notes
 '("python" ; not trying to build this from scratch.
   "python-matplotlib@2.0.2" ;7e06086522
   "python-nltk" ;need 3.2.5
   "python-pandas@0.22.0" ;ce2cfcabfc
   ;"python-wikipedia@1.4.0" need to guix import
   ;"python-toposort@1.5" need to guix import
   "python-networkx@2.1" ;269f100330
   ;"python-community@0.10" need to guix import
   "python-numpy@1.13.3" ;4d6ed794dd
   "python-pygraphviz" ;want 1.3 but only 1.5 available
   ;;may need graphviz-dev as well
   "python-scipy@1.0.1" ;02ddafef55
   ;"python-louvain@0.14" need to guix import
   ;need to install the author's custom modules))
#+END_SRC
I used the above as a guide while doing the actual imports/inferior
work.

[3]
#+begin_example scheme
In current input:
     12:3 12 (_)
In guix/store.scm:
   623:10 11 (call-with-store _)
  1803:24 10 (run-with-store #<store-connection 256.99 129ec60> _ # _ …)
In guix/inferior.scm:
   681:12  9 (_ _)
In guix/channels.scm:
    527:2  8 (_ _)
    485:2  7 (_ _)
In ./guix/monads.scm:
    482:9  6 (_ _)
In guix/store.scm:
  1673:13  5 (_ _)
In ice-9/eval.scm:
    619:8  4 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …))
   626:19  3 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …))
    155:9  2 (_ #(#(#(#<directory (build-self) 1842aa0>) "/gnu…" …) …))
   223:20  1 (proc #(#(#(#<directory (build-self) 1842aa0>) "/…" …) …))
In unknown file:
           0 (%resolve-variable (7 . %guix-register-program) #<direc…>)
#+end_example

[4]
| package of interest | guix commit  | status |
|---------------------+--------------+--------|
| python-matplotlib   | "7e06086522" | bad    |
| python-pandas       | ce2cfcabfc   | bad    |
| python-networkx     | 269f100330   | good   |
| python-numpy        | 4d6ed794dd   | bad    |
| python-scipy        | 02ddafef55   | good   |



reply via email to

[Prev in Thread] Current Thread [Next in Thread]