matthew-brett / delocate

Find and copy needed dynamic libraries into python wheels
BSD 2-Clause "Simplified" License
262 stars 59 forks source link

DelocationError: Already planning to copy library with same basename as: xxxx #148

Open LukasAdamowicz opened 2 years ago

LukasAdamowicz commented 2 years ago

Describe the bug Trying to fix a wheel with delocate-wheel -w fixed_wheels -v *.whl, I get the following error message:

Fixing: scikit_digital_health-0.9.12-cp310-cp310-macosx_10_9_x86_64.whl
Traceback (most recent call last):
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/bin/delocate-wheel", line 8, in <module>
    sys.exit(main())
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/lib/python3.10/site-packages/delocate/cmd/delocate_wheel.py", line 128, in main
    copied = delocate_wheel(
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/lib/python3.10/site-packages/delocate/delocating.py", line 643, in delocate_wheel
    copied_libs = delocate_path(
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/lib/python3.10/site-packages/delocate/delocating.py", line 473, in delocate_path
    return delocate_tree_libs(lib_dict, lib_path, tree_path)
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/lib/python3.10/site-packages/delocate/delocating.py", line 104, in delocate_tree_libs
    libraries_to_copy, libraries_to_delocate = _analyze_tree_libs(
  File "/Users/lukasadamowicz/miniconda3/envs/skdh/lib/python3.10/site-packages/delocate/delocating.py", line 145, in _analyze_tree_libs
    raise DelocationError(
delocate.delocating.DelocationError: Already planning to copy library with same basename as: libgfortran.5.dylib

To Reproduce delocate-wheel -w fixed_wheels -v scikit_digital_health-0.9.12-cp310-cp310-macosx_10_9_x86_64.whl

Expected behavior Expected standard output listing the libraries copied into the fixed wheel.

Wheels used Repository: LINK

wheel file: LINK

Platform (please complete the following information):

Additional context Output from delocate-listdeps --depending *.whl:

/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libbz2.1.0.8.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libzip.5.4.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libcrypto.1.1.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libzip.5.4.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgcc_s.1.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgfortran.5.dylib
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libquadmath.0.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgfortran.5.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libopenblasp-r0.3.18.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgsl.25.dylib:
    skdh/utility/_extensions/moving_median.cpython-310-darwin.so
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libomp.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libopenblasp-r0.3.18.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libopenblasp-r0.3.18.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgsl.25.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libquadmath.0.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgfortran.5.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libz.1.2.11.dylib:
    /Users/lukasadamowicz/miniconda3/envs/skdh/lib/libzip.5.4.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libzip.5.4.dylib:
    skdh/io/_extensions/gt3x_convert.cpython-310-darwin.so
/usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libgcc_s.1.dylib:
    skdh/io/_extensions/read.cpython-310-darwin.so
    /usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libgfortran.5.dylib
    /usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libquadmath.0.dylib
    skdh/features/lib/extensions/frequency.cpython-310-darwin.so
    skdh/features/lib/extensions/entropy.cpython-310-darwin.so
    skdh/features/lib/extensions/_utility.cpython-310-darwin.so
    skdh/features/lib/extensions/misc_features.cpython-310-darwin.so
    skdh/features/lib/extensions/smoothness.cpython-310-darwin.so
    skdh/features/lib/extensions/statistics.cpython-310-darwin.so
    skdh/utility/_extensions/moving_moments.cpython-310-darwin.so
/usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libgfortran.5.dylib:
    skdh/io/_extensions/read.cpython-310-darwin.so
    skdh/features/lib/extensions/frequency.cpython-310-darwin.so
    skdh/features/lib/extensions/entropy.cpython-310-darwin.so
    skdh/features/lib/extensions/_utility.cpython-310-darwin.so
    skdh/features/lib/extensions/misc_features.cpython-310-darwin.so
    skdh/features/lib/extensions/smoothness.cpython-310-darwin.so
    skdh/features/lib/extensions/statistics.cpython-310-darwin.so
    skdh/utility/_extensions/moving_moments.cpython-310-darwin.so
/usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libquadmath.0.dylib:
    skdh/io/_extensions/read.cpython-310-darwin.so
    /usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libgfortran.5.dylib
    skdh/features/lib/extensions/frequency.cpython-310-darwin.so
    skdh/features/lib/extensions/entropy.cpython-310-darwin.so
    skdh/features/lib/extensions/_utility.cpython-310-darwin.so
    skdh/features/lib/extensions/misc_features.cpython-310-darwin.so
    skdh/features/lib/extensions/smoothness.cpython-310-darwin.so
    skdh/features/lib/extensions/statistics.cpython-310-darwin.so
    skdh/utility/_extensions/moving_moments.cpython-310-darwin.so
LukasAdamowicz commented 2 years ago

I see why this happens, libgfortran.5.dylib gets referenced in two different places:

/usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11/libgfortran.5.dylib
/Users/lukasadamowicz/miniconda3/envs/skdh/lib/libgfortran.5.dylib

Since it is not installed on the system but in a conda environment.

Is there a way to resolve this? Ideally it would be nice to be able to continue using conda to install these libraries.