meinardmueller / synctoolbox

Sync Toolbox - Python package with reference implementations for efficient, robust, and accurate music synchronization based on dynamic time warping (DTW)
https://meinardmueller.github.io/synctoolbox
Other
112 stars 12 forks source link

Installation issues due to restrictive package versions #4

Closed faroit closed 3 years ago

faroit commented 3 years ago

installation on google colab requires a certain amounts of uninstalls to meet the requirements by the synctoolbox dependencies:

ERROR: jupyter-console 5.2.0 has requirement prompt-toolkit<2.0.0,>=1.0.0, but you'll have prompt-toolkit 3.0.19 which is incompatible.
ERROR: google-colab 1.0.0 has requirement ipython~=5.5.0, but you'll have ipython 7.25.0 which is incompatible.
ERROR: libfmp 1.1.2 has requirement ipython==7.8.*, but you'll have ipython 7.25.0 which is incompatible.
ERROR: libfmp 1.1.2 has requirement matplotlib==3.1.*, but you'll have matplotlib 3.2.2 which is incompatible.
ERROR: libfmp 1.1.2 has requirement numpy==1.17.*, but you'll have numpy 1.19.5 which is incompatible.
ERROR: libfmp 1.1.2 has requirement pandas==1.0.*, but you'll have pandas 1.1.5 which is incompatible.
ERROR: libfmp 1.1.2 has requirement scipy==1.3.*, but you'll have scipy 1.4.1 which is incompatible.

this is mainly caused by the frozen requirements of libfmp. To address this, a new release of libfmp on pypi should be issued (see https://github.com/meinardmueller/libfmp/issues/4) and synctoolbox should dependent only on that version (v1.1.3?)

ahnonay commented 3 years ago

Hi faroit,

thanks for raising this issue! We will update the Sync Toolbox to depend on the updated libfmp once that pypi package has been created. Regarding the problems faced by lutzhamel, I think this was rather caused by a missing libsndfile installation, see #3

faroit commented 3 years ago

Also, to me, it looks like dependency ranges are based on guesses, assuming that only the next major point release could potentially break the software.

setup.py states:

    install_requires=['ipython >= 7.8.0, < 8.0.0',
                      'librosa >= 0.8.0, < 1.0.0',
                      'matplotlib >= 3.1.0, < 4.0.0',
                      'music21 >= 5.7.0, < 6.0.0',
                      'numba >= 0.51.0, < 1.0.0',
                      'numpy >= 1.17.0, < 2.0.0',
                      'pandas >= 1.0.0, < 2.0.0',
                      'pretty_midi >= 0.2.0, < 1.0.0',
                      'pysoundfile >= 0.9.0, < 1.0.0',
                      'scipy >= 1.3.0, < 2.0.0',
                      'libfmp >= 1.1.0, < 2.0.0'],

potential problems with these dependencies include:

I would suggest to relax the upper range of the dependencies and update the package dependencies as needed and instead rely on unit testing and continuous integration (for example adding https://dependabot.com)

https://github.com/openjournals/joss-reviews/issues/3434

ahnonay commented 3 years ago

I've updated the minimum required libfmp version. Now, no more conflicts are arising during installation of this package.

Regarding the upper version limits: This choice was inspired by semantic versioning, where we expect that only major updates will introduce breaking changes. We are aware that this assumption is violated very often but felt that this was a good compromise.

Thanks for your suggestion to use dependabot etc. We can discuss this in issue #5