biocore / qiime

Official QIIME 1 software repository. QIIME 2 (https://qiime2.org) has succeeded QIIME 1 as of January 2018.
GNU General Public License v2.0
285 stars 268 forks source link

issues with uclust and FastTree from pip install -e . #1745

Open jairideout opened 9 years ago

jairideout commented 9 years ago

With a fresh QIIME installation in a virtualenv via pip install -e ., the uclust and FastTree executables that are automatically downloaded and installed by setup.py produce the following errors:

$ which uclust
/Users/jairideout/.virtualenvs/qiime/bin/uclust
$ uclust
Segmentation fault: 11
$ which FastTree
/Users/jairideout/.virtualenvs/qiime/bin/FastTree
$ FastTree
-bash: /Users/jairideout/.virtualenvs/qiime/bin/FastTree: Malformed Mach-o file

Here's my QIIME config:

$ print_qiime_config.py -tb

System information
==================
         Platform:  darwin
   Python version:  2.7.5 (default, Mar  9 2014, 22:15:05)  [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
Python executable:  /Users/jairideout/.virtualenvs/qiime/bin/python

Dependency versions
===================
                NumPy version:  1.9.1
                SciPy version:  0.14.0
           matplotlib version:  1.3.1
          biom-format version:  2.1.1
                 qcli version:  0.1.0
                 pyqi version:  0.3.2
           scikit-bio version:  0.2.1
        QIIME library version:  1.8.0-dev, master@c88b5e8
         QIIME script version:  1.8.0-dev
PyNAST version (if installed):  1.2.2
              Emperor version:  0.9.5

QIIME config values
===================
                     blastmat_dir:  None
   template_alignment_lanemask_fp:  None
                    jobs_to_start:  1
pynast_template_alignment_blastdb:  None
                         sc_queue:  all.q
            denoiser_min_per_core:  50
      topiaryexplorer_project_dir:  None
     pynast_template_alignment_fp:  None
assign_taxonomy_id_to_taxonomy_fp:  None
                         temp_dir:  /tmp/
assign_taxonomy_reference_seqs_fp:  None
                     torque_queue:  friendlyq
                      blastall_fp:  blastall
                 seconds_to_sleep:  2
                  cluster_jobs_fp:  None
F.............F
======================================================================
FAIL: test_FastTree_supported_version (__main__.QIIMEDependencyBase)
FastTree is in path and version is supported
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/jairideout/dev/qiime/scripts/print_qiime_config.py", line 396, in test_FastTree_supported_version
    "'%s'." % stdout)
AssertionError: Could not find FastTree version info in usage text ''.

======================================================================
FAIL: test_uclust_supported_version (__main__.QIIMEDependencyBase)
uclust is in path and version is supported
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/jairideout/dev/qiime/scripts/print_qiime_config.py", line 263, in test_uclust_supported_version
    % ('.'.join(map(str, acceptable_version)), version_string))
AssertionError: Unsupported uclust version. 1.2.22 is required, but running .

----------------------------------------------------------------------
Ran 15 tests in 0.178s

FAILED (failures=2)

I think @gregcaporaso also ran into this issue. I'm using OSX 10.9.5.

Downloading uclust manually using the link in setup.py works, and running uclust and FastTree from the scripts/ directory also works (but the installed versions within bin/ don't work).

cc @ElDeveloper

gregcaporaso commented 9 years ago

I get the same thing.

ElDeveloper commented 9 years ago

After chatting briefly with @jairideout it seems that doing pip install . will get you a correctly working uclust/FastTree but doing pip install -e . will present the error above.

jairideout commented 9 years ago

The issue is that pip install -e . invokes setuptools' "development mode", which installs simple wrapper scripts that check dependency version info and then call the original (uninstalled) scripts. It's trying to wrap the binary executables (e.g., uclust) this way and failing. After some googling I have no idea how to fix this. Just verified that FlowgramAli_4frame also suffers from this issue.

Reassigning to 2.0.0 milestone since this only affects developers who are installing with pip install -e ., and there are workarounds (e.g., copy the executables into bin/).