Closed MKoesters closed 4 years ago
I recently moved best_exact_fits
from Python to Cython. The release passed the test suite which exercises this component on Py3.5-3.7 on Linux. Can you make sure you've completely uninstalled ms_deisotope
from your environment, and then do a clean install?
I think I've encountered this type of issue before when I directly execute setup.py
instead of pip
to install packages from source, since pip
always enforces "single version externally managed" mode", but setuptools
doesn't automatically.
Thanks for your fast answer.
I'm running tests with tox and recreating the environment, so I'm quite confident that I'm not using an older version of ms_deisotope.
Also, this fails in the CI/CD pipeline of pymzML for https://github.com/pymzml/pymzML/pull/210 , see the log here I'm not quite sure if this is an error in our setup and if so, how to fix it
Best, Manuel
Thank you for following up.
There are two issues here. The first is that you're not loading the C extensions for some reason, which is odd. The second is that I didn't indent the conditional declaration of the Python fallback implementation correctly, so half of the methods on it were missing.
I've pushed commit 98cec4573890dfa3363df05b9fb7712382742d2b which fixes the indentation in the Python fallback implementation so all of the methods are properly defined on it.
I suspect you're encountering an error during C extension compilation on those versions of Python, but the error is getting swallowed by whatever you're using to install your dependencies. I'll look around a bit, but I thought my setup.py script would generate loud warning messages if C extensions failed to compile. Is there a verbose option for your environment setup?
I'll have a look at the logs and try to run the test CI/CD in verbose mode, I'll come back to you as soon as I found the relevant information.
I think I figured out what is going wrong.
When I download ms_deisotope==0.0.13 from pip and run pip install -v . I get the following output:
cd ms_deisotope-0.0.13
pip install -v .
Non-user install because user site-packages disabled
Created temporary directory: /tmp/pip-ephem-wheel-cache-w8adtcxa
Created temporary directory: /tmp/pip-req-tracker-wlr9xe9d
Initialized build tracking at /tmp/pip-req-tracker-wlr9xe9d
Created build tracker: /tmp/pip-req-tracker-wlr9xe9d
Entered build tracker: /tmp/pip-req-tracker-wlr9xe9d
Created temporary directory: /tmp/pip-install-xiw4qdo7
Processing /mnt/Downloads/ms_deisotope-0.0.13
Created temporary directory: /tmp/pip-req-build-8vzo4lan
Added file:///mnt/Downloads/ms_deisotope-0.0.13 to build tracker '/tmp/pip-req-tracker-wlr9xe9d'
Running setup.py (path:/tmp/pip-req-build-8vzo4lan/setup.py) egg_info for package from file:///mnt/Downloads/ms_deisotope-0.0.13
Running command python setup.py egg_info
Version is: '0.0.13'
Installation requires `brainpy`, install with `python -m pip install brain-isotopic-distribution`
No module named 'brainpy'
Version is: '0.0.13'
running egg_info
creating /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info
writing /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/PKG-INFO
writing dependency_links to /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/dependency_links.txt
writing entry points to /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/entry_points.txt
writing requirements to /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/requires.txt
writing top-level names to /tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/top_level.txt
writing manifest file '/tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/SOURCES.txt'
reading manifest file '/tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.h' under directory 'ms_deisotope'
warning: no previously-included files matching '*.pyd' found under directory 'ms_deisotope'
warning: no previously-included files matching '*' found under directory 'ms_deisotope/test/test_data'
writing manifest file '/tmp/pip-req-build-8vzo4lan/pip-egg-info/ms_deisotope.egg-info/SOURCES.txt'
***************************************************************************
WARNING: The C extension could not be compiled, speedups are not enabled.
Plain-Python build succeeded.
***************************************************************************
Source in /tmp/pip-req-build-8vzo4lan has version 0.0.13, which satisfies requirement ms-deisotope==0.0.13 from file:///mnt/Downloads/ms_deisotope-0.0.13
Removed ms-deisotope==0.0.13 from file:///mnt/Downloads/ms_deisotope-0.0.13 from build tracker '/tmp/pip-req-tracker-wlr9xe9d'
cd ms_deisotope-0.0.13
pip install -v cython numpy brain-isotopic-distribution .
Doesnt work either, since brainpy is built, but not available to ms_deisotope at that point.
So I guess when installing ms_deisotope from pip, I need to install brainpy manually with a separate pip call before, which is a bit annoying, but rather a problem of pymzMLs or python/pip dependency management, but please correct me if I'm wrong.
Ah, right. Build time dependencies. Thank you for getting the installation log. In order to build the C-extensions, you need Cython
, numpy
, ms_peak_picker
, and brain-isotopic-distribution
compiled and installed prior to executing pip install ms_deisotope
, and because pip
squelches any messages that do not actually kill the build, nobody would know this is happening.
Right now, what you need to do is the following to make sure all build-time dependencies are in place in-order:
pip install Cython numpy
pip install brain-isotopic-distribution
pip install ms_peak_picker
pip install ms_deisotope
This sounds like it needs to be tackled both as a documentation issue and a build system issue.
I'll cut a release tonight that explicitly lists these instructions, patches the pure Python implementation on PyPI, and start looking into the recent build system tooling that is supposed to make build time dependencies reasonable to use.
Okay. A 0.0.14 release for ms_deisotope
is live on PyPI which has all of the above changes and PEP 517/518 build isolation baked in, as does ms_peak_picker
and brainpy
, so they will ensure that all their build time dependencies are available first.
Testing with a clean environment seemed to work for me, but I am still uncertain I set this up correctly. Please let me know if they work for you.
I tested everything locally and using CI/CD, your fixes resolved the problem Thank you really much for resolving this issue that fast!
I'm trying to run this code
which always worked for me, but started failing with ms_deisotope==0.0.13 under linux with python >3.5, under windows it works fine for me.
Can you tell me if I need to adapt my code or if there is a bug in ms_deisotope?