Exécutez le script Python dans Jupyter notebook en utilisant un virtualenv spécifique

j'aimerais exécuter un script Python de longue durée à partir d'un ordinateur portable Jupyter afin de pouvoir pirater les structures de données générées en cours d'exécution.

le script a beaucoup de dépendances et d'arguments en ligne de commande et est exécuté avec un virtualenv spécifique. Est-il possible d'exécuter interactivement un script Python dans un notebook à partir d'un virtualenv spécifié (différent de celui de L'installation Jupyter)?

Merci!

39
demandé sur Bede Constantinides 2015-11-03 13:09:29

5 réponses

une solution un peu plus simple pour obtenir des noyaux de bloc-notes disponibles dans d'autres blocs-notes.

J'utilise Linux + virtualenv + virtualenvwrapper. Si vous utilisez une configuration différente, changez certaines commandes en commandes appropriées, mais vous devriez en avoir l'idée.

mkvirtualenv jupyter2
workon jupyter2
(jupyter2) pip install jupyter
(jupyter2) ipython kernel install --name "jupyter2_Python_2" --user

dernière commande crée ~/.local/share/jupyter/kernels/jupyter2\ python\ 2/ répertoire

même chose pour 3

mkvirtualenv -p /usr/bin/python3 jupyter3
// this uses python3 as default python in virtualenv
workon jupyter3
(jupyter3) pip install jupyter
(jupyter3) ipython kernel install --name "jupyter3_Python_3" --user

quand c'est fait, vous devriez voir les deux noyaux, peu importe ce que vous utilisez pour démarrer jupyter. Vous pouvez supprimer des liens vers les noyaux directement dans ~/.local/share/jupyter/kernels/. Pour spécifier l'emplacement, fournir des options à ipython kernel install (--help) ou simplement copier des répertoires à partir de ~/.local/share/jupyter/kernels/~/envs/jupyter3/share/jupyter si vous souhaitez exécuter plusieurs kerenels à partir d'un ordinateur portable.

33
répondu singer 2017-04-13 10:13:00

Voici ce qui a fonctionné pour moi (non conda python): (MacOS, brew version de python. si vous travaillez avec le système python, vous pouvez (devrez) préparer chaque commande avec sudo)

d'abord activer virtualenv

si repartir ensuite, par exemple, vous pouvez utiliser virtualenvwrapper

$pip install virtualenvwrapper
$mkvirtualenv -p python2 py2env 
$workon py2env

# This will activate virtualenv

(py2env)$ 

# Then install jupyter within the active virtualenv
(py2env)$ pip install jupyter

# jupyter comes with ipykernel, but somehow you manage to get an error due to ipykernel, then for reference ipykernel package can be installed using:
(py2env)$ pip install ipykernel

Ensuite, configurez le noyau

(py2env)$ python -m ipykernel install --user --name testenv --display-name "Python2 (py2env)"

puis démarrer carnet jupyter (le venv n'a pas besoin d'être activé pour cette étape)

(py2env)$ jupyter notebook
# or
#$ jupyter notebook

dans le jupyter notebook menu déroulant:Kernel >> Change Kernel >> <list of kernels> vous devriez voir Python2 (py2env) kernel

cela rend aussi facile d'identifier la version python du noyau, et de la maintenir côte à côte.

voici le lien vers Docs de détail http://ipython.readthedocs.io/en/stable/install/kernel_install.html

29
répondu muon 2017-11-08 00:00:33

j'ai trouvé ce lien très utile:

https://ocefpaf.github.io/python4oceanographers/blog/2014/09/01/ipython_kernel/

assurez-vous que vous pip installez jupyter dans votre virtualenv. Au cas où le lien disparaîtrait plus tard, voici l'essentiel:

vous devez créer un nouveau noyau. Vous spécifiez votre noyau avec un fichier JSON. Vos noyaux sont généralement situés à ~/.ipython/kernels. Créez un répertoire avec le nom de votre virtualenv et créez votre noyau.fichier json. Par exemple, un de mes chemins ressemble ~./ipython/kernels/datamanip/kernel.json

Voici mon noyau.fichier json ressemble à:

{
  "display_name": "Data Manipulation (Python2)",
  "language": "python",
  "codemirror_mode": {
    "version": 3,
    "name":"ipython"
  },
  "argv": [
    "/Users/ed/.virtualenvs/datamanip/bin/python",
    "-c",
    "from IPython.kernel.zmq.kernelapp import main; main()",
    "-f",
    "{connection_file}"
    ]
}

Je ne suis pas certain de ce que fait exactement l'objet codemirror_mode, mais il ne semble pas faire de mal.

13
répondu edhodapp 2015-12-30 16:49:43

c'est vraiment simple, basé sur le documentation

vous pouvez utiliser un virtualenv pour votre ordinateur portable IPython. Suivez les étapes suivantes, en fait pas besoin de la première étape, assurez-vous juste que vous avez activé votre virtualenv via source ~/path-to-your-virtualenv/

  1. installez le module du noyau ipython dans votre virtualenv