Well that worked! Thank you. I only had to adjust some dependencies. The 
execution (not the installation) of miso depends on _sqlite3 which wasn't 
checked before, I still need to solve this issue. Related to this I get a 
strange easybuild MPI error. When I load miso and execute the binary, it 
complains that it can't find sqlite. If I execute easybuild then, it gives me 
this strange error message (attached file). I wonder where the relation is?

Commands:

$ module load misopy
$ miso                         # here I get the missing sqlite error
$ eb -S sqlite             # here the error occurs

I will contribute when I got this issue solved.

  Oliver

________________________________
From: Kenneth Hoste [kenneth.ho...@ugent.be]
Sent: Tuesday, June 23, 2015 8:42 PM
To: easybuild@lists.ugent.be
Cc: Stolpe, Oliver
Subject: Re: [easybuild] Binary of a python package

Hi Oliver,

(you're not subscribed to this mailing list with the email address you used, 
but I did accept your mail since you're subscribed with another mail address 
and this is clearly a useful post; I added that in CC just to make sure you get 
this)

On 23/06/15 17:29, Stolpe, Oliver wrote:
Hello list,

I wrote an easyconfig file to install a python package. The installation is 
successful besides the fact that easybuild throws away the binary that is 
generated (or main entrance point for the standalone). When I install the 
software on my machine with python setup.py build/install --user, it puts the 
binary to ~/.local/bin, but I don't know where easybuild puts this file. When I 
look into the easybuild/software/MYSOFTWARE directory, there is no bin folder.

Please help me save the binary :-)

Welcome to the tarpit that is Python packaging...

There's good news (twice) and bad news.

The 1st good news is that I fixed your problem.
The bad news is that I had to patch something in the misopy 'sources' (well, 
the setup.py script).
The 2nd good news is that the patch is trivial. :-)

The problem is that misopy is using something called 'entry points', but not 
doing it 100% correctly.
See 
https://chriswarrick.com/blog/2014/09/15/python-apps-the-right-way-entry_points-and-scripts/
 .
The key phrase on that page is "You must use setuptools, otherwise this won’t 
work."

The setup.py of misopy has this though:

    from distutils.core import setup, Extension

This should actually be:

    from setuptools import setup, Extension

EasyBuild installs Python packages using "python setup.py build" and "python 
setup.py install".
In other words, it trusts that the setup.py script is doing what it should be 
doing. And in this case, it's not.

If you use pip to install misopy, you're unknowingly dancing around this 
problem, since pip apparently 'fixes' this by itself by providing something 
different than setuptools when importing from distutils.core . Ah, the joys of 
having 100 different ways of installing Python packages...

Anyway, the problem is fixed using the slightly modified easyconfig file and 
trivial patch file in attachment.

Note that I also made EasyBuild check that the 'bin/miso' script is actually 
being installed.
If you would comment out the patch, you'll notice that EasyBuild complains that 
'bin/miso' is missing, and thus that the installation is incomplete.
(behind the scenes, it's already making sure that "python -c 'import misopy' " 
works too)

I've reported this issue to the MISO developers, see 
https://github.com/yarden/MISO/pull/78 .


Please consider contributing back your working easyconfig file, see 
https://github.com/hpcugent/easybuild/wiki/Contributing-back .
If you're not up for that, let me know if it's OK if I do this for you instead.


regards,

Kenneth


Thanks,
  Oliver

The easyconfig file:

easyblock = 'PythonPackage'

name = 'misopy'
version = '0.5.3'

homepage = 'http://genes.mit.edu/burgelab/miso/index.html'
description = """MISO (Mixture of Isoforms) is a probabilistic framework that
 quantitates the expression level of alternatively spliced genes from RNA-Seq
 data, and identifies differentially regulated isoforms or exons across samples.
 By modeling the generative process by which reads are produced from isoforms in
 RNA-Seq, the MISO model uses Bayesian inference to compute the probability that
 a read originated from a particular isoform."""

toolchain = {'name': 'goolf', 'version': '1.4.10'}

source_urls = ['http://pypi.python.org/packages/source/m/misopy']
sources = ['%(namelower)s-%(version)s.tar.gz']

python = 'Python'
pythonver = '2.7.6'
versionsuffix = '-%s-%s' % (python, pythonver)

dependencies = [
    ('matplotlib', '1.3.1', versionsuffix),
    (python, pythonver),
]

moduleclass = 'bio'


ImportError: No module named _sqlite3

$ eb -S sqlite
[f967b29c4cb7:00121] [[INVALID],INVALID] ORTE_ERROR_LOG: Not found in file 
ess_hnp_module.c at line 170
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems.  This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):

  orte_plm_base_select failed
  --> Returned value Not found (-13) instead of ORTE_SUCCESS
--------------------------------------------------------------------------
[f967b29c4cb7:00121] [[INVALID],INVALID] ORTE_ERROR_LOG: Not found in file 
runtime/orte_init.c at line 128
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems.  This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):

  orte_ess_set_name failed
  --> Returned value Not found (-13) instead of ORTE_SUCCESS
--------------------------------------------------------------------------
[f967b29c4cb7:00121] [[INVALID],INVALID] ORTE_ERROR_LOG: Not found in file 
orted/orted_main.c at line 353
[f967b29c4cb7:00120] [[INVALID],INVALID] ORTE_ERROR_LOG: Unable to start a 
daemon on the local node in file ess_singleton_module.c at line 343
[f967b29c4cb7:00120] [[INVALID],INVALID] ORTE_ERROR_LOG: Unable to start a 
daemon on the local node in file ess_singleton_module.c at line 140
[f967b29c4cb7:00120] [[INVALID],INVALID] ORTE_ERROR_LOG: Unable to start a 
daemon on the local node in file runtime/orte_init.c at line 128
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems.  This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):

  orte_ess_set_name failed
  --> Returned value Unable to start a daemon on the local node (-128) instead 
of ORTE_SUCCESS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
It looks like MPI_INIT failed for some reason; your parallel process is
likely to abort.  There are many reasons that a parallel process can
fail during MPI_INIT; some of which are due to configuration or environment
problems.  This failure appears to be an internal failure; here's some
additional information (which may only be relevant to an Open MPI
developer):

  ompi_mpi_init: orte_init failed
  --> Returned "Unable to start a daemon on the local node" (-128) instead of 
"Success" (0)
--------------------------------------------------------------------------
[f967b29c4cb7:120] *** An error occurred in MPI_Init_thread
[f967b29c4cb7:120] *** on a NULL communicator
[f967b29c4cb7:120] *** Unknown error
[f967b29c4cb7:120] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
--------------------------------------------------------------------------
An MPI process is aborting at a time when it cannot guarantee that all
of its peer processes in the job will be killed properly.  You should
double check that everything has shut down cleanly.

  Reason:     Before MPI_INIT completed
  Local host: f967b29c4cb7
  PID:        120
--------------------------------------------------------------------------

Reply via email to