# Installation de librairie python HAIL

**URL:** <https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171>\
**Category:** Tool or data bank request\
**Created:** [Avril 8, 2024, 10:56 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171 "2024-04-08T10:56:32Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fpouyet](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/f/f0a364/32.png) [@fpouyet](https://community.france-bioinformatique.fr/u/fpouyet)\
**Post date:** [Avril 8, 2024, 10:56 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171/1 "2024-04-08T10:56:32Z")

</div>

Bonjour,

Je souhaiterai installer la librairie python Hail sur le cluster. Elle permet de traiter la banque de données gnomAD qui est déjà disponible sur le cluster mais je ne la trouve pas.

[https://hail.is/docs/0.2/install/linux.html](https://hail.is/docs/0.2/install/linux.html)

Merci!  
Fanny

---

<div class="post-metadata">

**Author:** ![arthurlebars](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/arthurlebars/32/1661_2.png) [@arthurlebars](https://community.france-bioinformatique.fr/u/arthurlebars)\
**Post date:** [Avril 11, 2024, 12:41 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171/2 "2024-04-11T12:41:05Z")

</div>

Bonjour @fpouyet, nous n'avons pas pour habitude d'installer des librairies python dans les versions chargeables par `module`, mais vous pouvez installer la librairie hail localement (dans votre home `/shared/home/fpouyet` par exemple).

Pensez a vous connecter a un noeud de calcul avec `srun --pty bash`, et lancez depuis votre home:

```auto
module load python/3.9
python3 -m venv .hail
source .hail/bin/activate
pip install hail

```

J'ai testé l'import de la librairie dans la console python et ca a l'air de fonctionner, mais n'hésitez pas a réouvrir le sujet si vous rencontrez des problèmes avec cette installation locale.

---

<div class="post-metadata">

**Author:** ![fpouyet](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/f/f0a364/32.png) [@fpouyet](https://community.france-bioinformatique.fr/u/fpouyet)\
**Post date:** [Mai 8, 2024, 3:55 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171/3 "2024-05-08T03:55:31Z")

</div>

Bonjour je réouvre le sujet car je ne comprends plus comment lancer des jobs du coup.

En local j'ai réussi a installer hail comme dit ci dessus ! Merci !

Maintenant je veux lancer plusieurs jobs mais srun est en interactif. Comment je fais pour lancer un sbatch monjob.sh pour lequel dans monjob je veux faire un modeul load python puis appeler hail ?

Il me manque une marche d'explication.. désolée !

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 13, 2024, 11:07 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171/4 "2024-05-13T11:07:37Z")

</div>

Bonjour Fanny,

Si vous utilisez un version python déjà présente, via module, il faut installer votre module pour cette version de python.

Par exemple:

```auto
module load python/3.9
pip install hail

```

L'installation du module se fera alors dans votre /home directory (valable uniquement pour cette version de python).

Par la suite, il suffit juste de charger le module dans votre script sbatch:

```auto
#!/bin/bash

#SBATCH <...>

module load python/3.9

# Et lancer la commande ou script python
# Les packages installés (i.e. hail) sont déjà présents
python <...>

```

Comme le propose Arthur, vous pouvez également créer un environnement virtuel python.  
Installer le package `hail` dans l'environnement.  
Il faut alors charger le module et activé cet environnement dans votre script sbatch:

```auto
#!/bin/bash

#SBATCH <...>

module load python/3.9
source .hail/bin/activate

# Et lancer la commande ou script python
# Les packages installés (i.e. hail) sont présents dans l'environnement activé
python <...>

```

Dites-nous si c'est ca fonctionne pour vous.

---

<div class="post-metadata">

**Author:** ![Nadine\_You](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/nadine_you/32/1384_2.png) [@Nadine\_You](https://community.france-bioinformatique.fr/u/Nadine_You)\
**Post date:** [Juin 11, 2024, 11:18 UTC](https://community.france-bioinformatique.fr/t/installation-de-librairie-python-hail/4171/5 "2024-06-11T11:18:35Z")

</div>

## Bonjour, j'ai réussi a l'installer sur le serveur mais en utilisant un job.sh pour executer mes codes, du coup je voulais passer sur jupyter notebook mais j'ai cette erreur: JAVA\_HOME is not set

RuntimeError Traceback (most recent call last)  
Cell In[1], line 2  
1 import hail as hl  
----\> 2 hl.init()

File :2, in init(sc, app\_name, master, local, log, quiet, append, min\_block\_size, branching\_factor, tmp\_dir, default\_reference, idempotent, global\_seed, spark\_conf, skip\_logging\_configuration, local\_tmpdir, \_optimizer\_iterations, backend, driver\_cores, driver\_memory, worker\_cores, worker\_memory, gcs\_requester\_pays\_configuration, regions, gcs\_bucket\_allow\_list, copy\_spark\_log\_on\_error)

File ~/.local/lib/python3.9/site-packages/hail/typecheck/check.py:585, in \_make\_dec..wrapper(\_\_original\_func, \*args, \*\*kwargs)  
582 @decorator  
583 def wrapper(_original\_func: Callable[..., T], \*args, \*\*kwargs) -\> T:  
584 args, kwargs_ = check\_all(\_\_original\_func, args, kwargs, checkers, is\_method=is\_method)  
--\> 585 return _original\_func(\*args, \*\*kwargs_)

File ~/.local/lib/python3.9/site-packages/hail/context.py:391, in init(sc, app\_name, master, local, log, quiet, append, min\_block\_size, branching\_factor, tmp\_dir, default\_reference, idempotent, global\_seed, spark\_conf, skip\_logging\_configuration, local\_tmpdir, \_optimizer\_iterations, backend, driver\_cores, driver\_memory, worker\_cores, worker\_memory, gcs\_requester\_pays\_configuration, regions, gcs\_bucket\_allow\_list, copy\_spark\_log\_on\_error)  
371 return hail\_event\_loop().run\_until\_complete(  
372 init\_batch(  
373 log=log,  
(...)  
388 )  
389 )  
390 if backend == 'spark':  
--\> 391 return init\_spark(  
392 sc=sc,  
393 app\_name=app\_name,  
394 master=master,  
395 local=local,  
396 min\_block\_size=min\_block\_size,  
397 branching\_factor=branching\_factor,  
398 spark\_conf=spark\_conf,  
399 \_optimizer\_iterations=\_optimizer\_iterations,  
400 log=log,  
401 quiet=quiet,  
402 append=append,  
403 tmp\_dir=tmp\_dir,  
404 local\_tmpdir=local\_tmpdir,  
405 default\_reference=default\_reference,  
406 global\_seed=global\_seed,  
407 skip\_logging\_configuration=skip\_logging\_configuration,  
408 gcs\_requester\_pays\_configuration=gcs\_requester\_pays\_configuration,  
409 copy\_log\_on\_error=copy\_spark\_log\_on\_error,  
410 )  
411 if backend == 'local':  
412 return init\_local(  
413 log=log,  
414 quiet=quiet,  
(...)  
420 gcs\_requester\_pays\_configuration=gcs\_requester\_pays\_configuration,  
421 )

File :2, in init\_spark(sc, app\_name, master, local, log, quiet, append, min\_block\_size, branching\_factor, tmp\_dir, default\_reference, idempotent, global\_seed, spark\_conf, skip\_logging\_configuration, local\_tmpdir, \_optimizer\_iterations, gcs\_requester\_pays\_configuration, copy\_log\_on\_error)

File ~/.local/lib/python3.9/site-packages/hail/typecheck/check.py:585, in \_make\_dec..wrapper(\_\_original\_func, \*args, \*\*kwargs)  
582 @decorator  
583 def wrapper(_original\_func: Callable[..., T], \*args, \*\*kwargs) -\> T:  
584 args, kwargs_ = check\_all(\_\_original\_func, args, kwargs, checkers, is\_method=is\_method)  
--\> 585 return _original\_func(\*args, \*\*kwargs_)

File ~/.local/lib/python3.9/site-packages/hail/context.py:484, in init\_spark(sc, app\_name, master, local, log, quiet, append, min\_block\_size, branching\_factor, tmp\_dir, default\_reference, idempotent, global\_seed, spark\_conf, skip\_logging\_configuration, local\_tmpdir, \_optimizer\_iterations, gcs\_requester\_pays\_configuration, copy\_log\_on\_error)  
475 app\_name = app\_name or 'Hail'  
476 (  
477 gcs\_requester\_pays\_project,  
478 gcs\_requester\_pays\_buckets,  
(...)  
482 )  
483 )  
--\> 484 backend = SparkBackend(  
485 idempotent,  
486 sc,  
487 spark\_conf,  
488 app\_name,  
489 master,  
490 local,  
491 log,  
492 quiet,  
493 append,  
494 min\_block\_size,  
495 branching\_factor,  
496 tmpdir,  
497 local\_tmpdir,  
498 skip\_logging\_configuration,  
499 optimizer\_iterations,  
500 gcs\_requester\_pays\_project=gcs\_requester\_pays\_project,  
501 gcs\_requester\_pays\_buckets=gcs\_requester\_pays\_buckets,  
502 copy\_log\_on\_error=copy\_log\_on\_error,  
503 )  
504 if not backend.fs.exists(tmpdir):  
505 backend.fs.mkdir(tmpdir)

File ~/.local/lib/python3.9/site-packages/hail/backend/spark\_backend.py:91, in SparkBackend. **init** (self, idempotent, sc, spark\_conf, app\_name, master, local, log, quiet, append, min\_block\_size, branching\_factor, tmpdir, local\_tmpdir, skip\_logging\_configuration, optimizer\_iterations, gcs\_requester\_pays\_project, gcs\_requester\_pays\_buckets, copy\_log\_on\_error)  
86 append\_to\_comma\_separated\_list(  
87 conf, 'spark.executor.extraClassPath', './hail-all-spark.jar', \*extra\_classpath  
88 )  
90 if sc is None:  
---\> 91 pyspark.SparkContext.\_ensure\_initialized(conf=conf)  
92 elif not quiet:  
93 sys.stderr.write(  
94 'pip-installed Hail requires additional configuration options in Spark referring\n'  
95 ' to the path to the Hail Python module directory HAIL\_DIR,\n'  
(...)  
99 ' spark.executor.extraClassPath=./hail-all-spark.jar'  
100 )

File ~/.local/lib/python3.9/site-packages/pyspark/context.py:417, in SparkContext.\_ensure\_initialized(cls, instance, gateway, conf)  
415 with SparkContext.\_lock:  
416 if not SparkContext.\_gateway:  
--\> 417 SparkContext.\_gateway = gateway or launch\_gateway(conf)  
418 SparkContext.\_jvm = SparkContext.\_gateway.jvm  
420 if instance:

File ~/.local/lib/python3.9/site-packages/pyspark/java\_gateway.py:106, in launch\_gateway(conf, popen\_kwargs)  
103 time.sleep(0.1)  
105 if not os.path.isfile(conn\_info\_file):  
--\> 106 raise RuntimeError("Java gateway process exited before sending its port number")  
108 with open(conn\_info\_file, "rb") as info:  
109 gateway\_port = read\_int(info)

RuntimeError: Java gateway process exited before sending its port number

j'essaie de trouver java sur le serveur mais je n'y arrive pas  
Merci  
Très Cordialement  
NadineY
