Commit 038bcec6 authored by Arnaud Legrand's avatar Arnaud Legrand

A few information on tracking dependency in python and R

parent 6399576d
# -*- mode: org -*-
#+TITLE:
#+AUTHOR: Arnaud Legrand
#+DATE: June, 2018
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export
* Getting information about Python(3) libraries
** Getting the list of installed packages and their version
https://stackoverflow.com/questions/20180543/how-to-check-version-of-python-modules
#+begin_src shell :results output :exports both
pip3 freeze
#+end_src
#+RESULTS:
#+begin_example
asn1crypto==0.24.0
attrs==17.4.0
bcrypt==3.1.4
beautifulsoup4==4.6.0
bleach==2.1.3
...
pandas==0.22.0
pandocfilters==1.4.2
paramiko==2.4.0
patsy==0.5.0
pexpect==4.2.1
...
traitlets==4.3.2
tzlocal==1.5.1
urllib3==1.22
wcwidth==0.1.7
webencodings==0.5
#+end_example
#+begin_src shell :results output :exports both
pip3 show pandas
echo " "
pip3 show statsmodels
#+end_src
#+RESULTS:
#+begin_example
Name: pandas
Version: 0.22.0
Summary: Powerful data structures for data analysis, time series,and statistics
Home-page: http://pandas.pydata.org
Author: None
Author-email: None
License: BSD
Location: /usr/lib/python3/dist-packages
Requires:
Name: statsmodels
Version: 0.9.0
Summary: Statistical computations and models for Python
Home-page: http://www.statsmodels.org/
Author: None
Author-email: None
License: BSD License
Location: /home/alegrand/.local/lib/python3.6/site-packages
Requires: patsy, pandas
#+end_example
#+begin_src python :results output :exports both
#+end_src
** How to list imported modules?
Inspiring from [[https://stackoverflow.com/questions/4858100/how-to-list-imported-modules][StackOverflow]], here is a simple function that lists
loaded package (that have a =__version__= attribute, which is
unfortunately not completely standard).
#+begin_src python :results output :exports both
def print_imported_modules():
import sys
for name,val in sys.modules.items():
if(hasattr(val, '__version__')):
print(val.__name__, val.__version__)
print("**** Package list in the beginning ****");
print_imported_modules()
print("**** Package list after loading pandas ****");
import pandas
print_imported_modules()
#+end_src
#+RESULTS:
#+begin_example
,**** Package list in the beginning ****
,**** Package list after loading pandas ****
pandas 0.22.0
numpy 1.14.5
numpy.lib 1.14.5
numpy.core 1.14.5
numpy.core.multiarray 3.1
numpy.core.umath b'0.4.0'
re 2.2.1
ctypes 1.1.0
_ctypes 1.1.0
logging 0.5.1.2
argparse 1.1
zlib 1.0
numpy.linalg._umath_linalg b'0.1.5'
decimal 1.70
decimal 1.70
pytz 2018.5
dateutil 2.7.3
distutils 3.6.5rc1
platform 1.0.8
ipaddress 1.0
six 1.11.0
json 2.0.9
csv 1.0
_csv 1.0
urllib.request 3.6
matplotlib 2.1.1
pyparsing 2.2.0
cycler 0.10.0
_libjson 1.33
#+end_example
** Setting up an environment with pip
The easiest way to go is as follows:
#+begin_src shell :results output :exports both
pip3 freeze > requirements.txt # to obtain the list of packages with their version
pip3 install -r requirements.txt # to install the previous list of packages, possibly on an other machine
#+end_src
If you want to have several installed python environments, you may
want to use [[https://docs.pipenv.org/][Pipenv]]. I doubt it allows to track correctly FORTRAN or C
dynamic libraries that are wrapped by Python.
* Getting information about R libraries
The best way seems to be to rely on the =devtools= package.
#+begin_src R :results output :session *R* :exports both
sessionInfo()
devtools::session_info()
#+end_src
#+RESULTS:
#+begin_example
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux buster/sid
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C
[3] LC_TIME=fr_FR.UTF-8 LC_COLLATE=fr_FR.UTF-8
[5] LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.1
Session info ------------------------------------------------------------------
setting value
version R version 3.5.1 (2018-07-02)
system x86_64, linux-gnu
ui X11
language (EN)
collate fr_FR.UTF-8
tz Europe/Paris
date 2018-08-01
Packages ----------------------------------------------------------------------
package * version date source
base * 3.5.1 2018-07-02 local
compiler 3.5.1 2018-07-02 local
datasets * 3.5.1 2018-07-02 local
devtools 1.13.6 2018-06-27 CRAN (R 3.5.1)
digest 0.6.15 2018-01-28 CRAN (R 3.5.0)
graphics * 3.5.1 2018-07-02 local
grDevices * 3.5.1 2018-07-02 local
memoise 1.1.0 2017-04-21 CRAN (R 3.5.1)
methods * 3.5.1 2018-07-02 local
stats * 3.5.1 2018-07-02 local
utils * 3.5.1 2018-07-02 local
withr 2.1.2 2018-03-15 CRAN (R 3.5.0)
#+end_example
Some actually advocate that [[https://github.com/ropensci/rrrpkg][writing a reproducible research compendium
can be done by writing an R package]]. Those of you willing to have a
clean R dependency management should thus have a look at [[https://rstudio.github.io/packrat/][Packrat]].
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment