conda-forge / pyqt-feedstock

A conda-smithy repository for pyqt.
BSD 3-Clause "New" or "Revised" License
5 stars 36 forks source link

Importing PyQt5 can modify the DLL search path on Windows in a way that breaks loading other libraries #138

Open ryanvolz opened 1 month ago

ryanvolz commented 1 month ago

Solution to issue cannot be found in the documentation.

Issue

I'm a conda-forge maintainer for gnuradio, and for a while I've been seeing reports from users about DLL loading failures having something to do with Qt: https://github.com/ryanvolz/radioconda/issues/78. It turns out to be a strange interaction between multiple things, but it eventually boils down to a fix that might be best applied with the pyqt package.

The error sequence

What's happening

On Windows, PyQt5's configure.py inserts the following code into the package's top-level __init__.py:

def find_qt():
    import os, sys

    qtcore_dll = '\\Qt5Core.dll'

    dll_dir = os.path.dirname(sys.executable)
    if not os.path.isfile(dll_dir + qtcore_dll):
        path = os.environ['PATH']

        dll_dir = os.path.dirname(__file__) + '\\Qt5\\bin'
        if os.path.isfile(dll_dir + qtcore_dll):
            path = dll_dir + ';' + path
            os.environ['PATH'] = path
        else:
            for dll_dir in path.split(';'):
                if os.path.isfile(dll_dir + qtcore_dll):
                    break
            else:
                return

    try:
        os.add_dll_directory(dll_dir)
    except AttributeError:
        pass

find_qt()
del find_qt

So the first directory on the user's PATH that contains Qt5Core.dll gets added as a DLL search directory with os.add_dll_directory(). The conda-forge qt-main package does not supply Qt5Core.dll because it supplies Qt5Core_conda.dll, so normally the search would fail and no directories would be added to the DLL search path by this code. This is fine because the proper Qt libraries are found anyway. Where this goes wrong is if the PATH contains a directory that does have Qt5Core.dll. In that case, it is added and preferred in the DLL search order. That's still not necessarily a problem, because PyQt5 and any other conda-forge package that links to Qt will not try to load Qt5Core.dll because they will look for Qt5Core_conda.dll. However, if that directory that is now preferred in the DLL search order contains other DLLs that other libraries might try to load, then they will end up trying to load these external non-conda-forge libraries. Again, in my example, this happens with gnuradio-qtgui needing qwt.dll which happens to frequently pop up bundled next to Qt5Core.dll on users' PATHs.

Conclusion

It's clearly a bit buggy that PyQt5 assumes that it is always looking for Qt5Core.dll, when clearly packagers like conda-forge can add a suffix and it should be looking for Qt5Core_conda.dll. That's something that could be fixed upstream, although it seems unlikely to me. Alternatively, this feedstock could be patched so that the code inserted from configure.py tries to look for Qt5Core_conda.dll instead, or perhaps more simply, remove all of the inserted code since it doesn't seem necessary for the conda setup. I could take a swing at a PR if that solution sounds acceptable.

### Installed packages ```shell # packages in environment at C:\Users\rvolz\radioconda: # # Name Version Build Channel adwaita-icon-theme 46.0 win_0 conda-forge airspy 1.0.10 h8ffe710_0 conda-forge airspyhf 1.6.8 h8ffe710_0 conda-forge appdirs 1.4.4 pyh9f0ad1d_0 conda-forge archspec 0.2.3 pyhd8ed1ab_0 conda-forge asciimatics 1.15.0 pyhd8ed1ab_0 conda-forge asttokens 2.4.1 pyhd8ed1ab_0 conda-forge atk-1.0 2.38.0 hb44c4ce_2 conda-forge attrs 23.2.0 pyh71513ae_0 conda-forge bcrypt 4.1.2 py311hc37eb10_0 conda-forge bidict 0.23.1 pyhd8ed1ab_0 conda-forge bladerf 2023.02 hcfcfb64_0 conda-forge blinker 1.8.2 pyhd8ed1ab_0 conda-forge boltons 24.0.0 pyhd8ed1ab_0 conda-forge brotli 1.1.0 hcfcfb64_1 conda-forge brotli-bin 1.1.0 hcfcfb64_1 conda-forge brotli-python 1.1.0 py311h12c1d0e_1 conda-forge bzip2 1.0.8 hcfcfb64_5 conda-forge ca-certificates 2024.2.2 h56e8100_0 conda-forge cached-property 1.5.2 hd8ed1ab_1 conda-forge cached_property 1.5.2 pyha770c72_1 conda-forge cairo 1.18.0 h1fef639_0 conda-forge certifi 2024.2.2 pyhd8ed1ab_0 conda-forge cffi 1.16.0 py311ha68e1ae_0 conda-forge charset-normalizer 3.3.2 pyhd8ed1ab_0 conda-forge click 8.1.7 win_pyh7428d3b_0 conda-forge click-plugins 1.1.1 py_0 conda-forge cmake 3.29.3 h75d51d9_0 conda-forge codec2 1.0.3 hcd874cb_0 conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge conda 24.5.0 py311h1ea47a8_0 conda-forge conda-libmamba-solver 24.1.0 pyhd8ed1ab_0 conda-forge conda-package-handling 2.2.0 pyh38be061_0 conda-forge conda-package-streaming 0.9.0 pyhd8ed1ab_0 conda-forge construct 2.10.70 pyhd8ed1ab_0 conda-forge contourpy 1.2.1 py311h005e61a_0 conda-forge cryptography 42.0.7 py311hfd75b31_0 conda-forge cycler 0.12.1 pyhd8ed1ab_0 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge digital_rf 2.6.8 py311hda12615_2 conda-forge distro 1.9.0 pyhd8ed1ab_0 conda-forge dlltracer 1.0.2 py311hfb96f46_1 conda-forge/label/dlltracer_dev docutils 0.21.2 pyhd8ed1ab_0 conda-forge ephem 4.1.5 py311ha68e1ae_1 conda-forge epoxy 1.5.10 h8d14728_1 conda-forge exceptiongroup 1.2.0 pyhd8ed1ab_2 conda-forge executing 2.0.1 pyhd8ed1ab_0 conda-forge expat 2.6.2 h63175ca_0 conda-forge fftw 3.3.10 nompi_h38027f0_108 conda-forge flask 3.0.3 pyhd8ed1ab_0 conda-forge flask-socketio 5.3.6 pyhd8ed1ab_0 conda-forge fmt 10.2.1 h181d51b_0 conda-forge font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge font-ttf-inconsolata 3.000 h77eed37_0 conda-forge font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge font-ttf-ubuntu 0.83 h77eed37_2 conda-forge fontconfig 2.14.2 hbde0cde_0 conda-forge fonts-conda-ecosystem 1 0 conda-forge fonts-conda-forge 1 0 conda-forge fonttools 4.51.0 py311ha68e1ae_0 conda-forge freetype 2.12.1 hdaf720e_2 conda-forge fribidi 1.0.10 h8d14728_0 conda-forge frozendict 2.4.4 py311he736701_0 conda-forge fs 2.4.16 pyhd8ed1ab_0 conda-forge future 1.0.0 pyhd8ed1ab_0 conda-forge gdk-pixbuf 2.42.12 hed59a49_0 conda-forge gevent 23.9.0.post1 py311ha68e1ae_1 conda-forge gevent-websocket 0.10.1 py_0 conda-forge glew 2.1.0 h39d44d4_2 conda-forge glfw 3.4 hcfcfb64_0 conda-forge glib 2.80.2 h0df6a38_0 conda-forge glib-tools 2.80.2 h2f9d560_0 conda-forge gnuradio 3.10.10.0 py311h4835986_3 conda-forge gnuradio-adsb 0.0.0.20240508.dev+gafd7fabda win_pyh0207874_0 ryanvolz gnuradio-core 3.10.10.0 py311hf4d2179_3 conda-forge gnuradio-dect2 0.0.0.20240502.dev+gb296af2a9 py311h731d093_0 ryanvolz gnuradio-filerepeater 0.0.0.20240502.dev+gd7bb8846c py311hc73e630_0 ryanvolz gnuradio-foo 0.0.0.20240502.dev+gc53538a22 py311hd88f94d_0 ryanvolz gnuradio-fosphor 0.0.0.20240502.dev+g656fe2f py311h8c3b4f8_0 ryanvolz gnuradio-gpredict-doppler 0.0.0.20240508.dev+gb06bc7678 win_pyh761a00b_0 ryanvolz gnuradio-grc 3.10.10.0 py311h21c3f2e_3 conda-forge gnuradio-ieee802_11 0.0.0.20240507.dev+g8c058d4e0 py311hc4e8945_0 ryanvolz gnuradio-ieee802_15_4 3.6.post133+g932c76f py311h80bdee0_0 ryanvolz gnuradio-iio 3.10.10.0 py311hdc9aee8_3 conda-forge gnuradio-inspector 0.0.0.20240507.dev+g47e47d4 py311h5089839_0 ryanvolz gnuradio-iqbalance 0.38.2 py311h612ad4a_3 conda-forge gnuradio-iridium 1!1.0.0 py311h12d8b78_11 conda-forge gnuradio-leo 1.0.0.post105+12a346f py311h16091ff_0 ryanvolz gnuradio-leo-data 1.0.0.post105+12a346f win_0 ryanvolz gnuradio-lora_sdr 0.0.0.20240508.dev+g751a65269 py311h16091ff_0 ryanvolz gnuradio-m2k 1.0.0 py311h7960a3c_9 conda-forge gnuradio-osmosdr 0.2.4 py311hcfe3240_16 conda-forge gnuradio-paint 0.0.0.20240508.dev+g82696a2 py311h16091ff_0 ryanvolz gnuradio-pmt 3.10.10.0 py311h9f5daf3_3 conda-forge gnuradio-qtgui 3.10.10.0 py311hcb5a915_3 conda-forge gnuradio-radar 0.0.0.20240508.dev+g0b237f6 py311h91e6648_0 ryanvolz gnuradio-rds 3.10.post22+g2134008 py311haee66f7_0 ryanvolz gnuradio-satellites 5.5.0 py311he9fa361_2 conda-forge gnuradio-soapy 3.10.10.0 py311h8052448_3 conda-forge gnuradio-uhd 3.10.10.0 py311h5c0f5fd_3 conda-forge gnuradio-video-sdl 3.10.10.0 py311h21c3f2e_3 conda-forge gnuradio-zeromq 3.10.10.0 py311h48723ec_3 conda-forge gqrx 2.17.5 h30ace0d_3 conda-forge graphite2 1.3.13 h63175ca_1003 conda-forge greenlet 3.0.3 py311h12c1d0e_0 conda-forge gsl 2.7 hdfb1a43_0 conda-forge gst-plugins-base 1.24.3 hba88be7_0 conda-forge gstreamer 1.24.3 h5006eae_0 conda-forge gtest 1.14.0 h91493d7_1 conda-forge gtk3 3.24.42 h06195f2_0 conda-forge h11 0.14.0 pyhd8ed1ab_0 conda-forge h5py 3.11.0 nompi_py311h7195302_100 conda-forge hackrf 2024.02.1 h9647d90_0 conda-forge hamlib 4.5.5 h3df6e99_3 conda-forge hamlib-all 4.5.5 win_3 conda-forge hamlib-lua 4.5.5 lua54hcfcfb64_3 conda-forge hamlib-python 4.5.5 py311ha68e1ae_3 conda-forge hamlib-tcl 4.5.5 h7534570_3 conda-forge harfbuzz 8.5.0 h81778c3_0 conda-forge hdf5 1.14.3 nompi_h73e8ff5_101 conda-forge hicolor-icon-theme 0.17 h57928b3_2 conda-forge icu 73.2 h63175ca_0 conda-forge idna 3.7 pyhd8ed1ab_0 conda-forge importlib-metadata 7.1.0 pyha770c72_0 conda-forge importlib_resources 6.4.0 pyhd8ed1ab_0 conda-forge inspectrum 0.3.1 hfd82842_0 conda-forge ipython 8.24.0 pyh7428d3b_0 conda-forge itsdangerous 2.2.0 pyhd8ed1ab_0 conda-forge jedi 0.19.1 pyhd8ed1ab_0 conda-forge jinja2 3.1.4 pyhd8ed1ab_0 conda-forge jsonpatch 1.33 pyhd8ed1ab_0 conda-forge jsonpointer 2.4 py311h1ea47a8_3 conda-forge jsonschema 4.22.0 pyhd8ed1ab_0 conda-forge jsonschema-specifications 2023.12.1 pyhd8ed1ab_0 conda-forge khronos-opencl-icd-loader 2023.04.17 h64bf75a_0 conda-forge kiwisolver 1.4.5 py311h005e61a_1 conda-forge krb5 1.21.2 heb0366b_0 conda-forge lame 3.100 hcfcfb64_1003 conda-forge lcms2 2.16 h67d730c_0 conda-forge lerc 4.0.0 h63175ca_0 conda-forge libad9361-iio 0.2 hd08dcc8_3 conda-forge libaec 1.1.3 h63175ca_0 conda-forge libairspy 1.0.10 h8ffe710_0 conda-forge libairspyhf 1.6.8 h8ffe710_0 conda-forge libarchive 3.7.2 h313118b_1 conda-forge libbladerf-python 2023.02 py_0 conda-forge libbladerf2 2023.02 hcfcfb64_0 conda-forge libblas 3.9.0 22_win64_openblas conda-forge libboost 1.82.0 h65993cd_6 conda-forge libbrotlicommon 1.1.0 hcfcfb64_1 conda-forge libbrotlidec 1.1.0 hcfcfb64_1 conda-forge libbrotlienc 1.1.0 hcfcfb64_1 conda-forge libcblas 3.9.0 22_win64_openblas conda-forge libclang13 18.1.5 default_hf64faad_0 conda-forge libcodec2 1.0.3 hcd874cb_0 conda-forge libcorrect 0.0.0 hcfcfb64_0 conda-forge libcurl 8.7.1 hd5e4a3a_0 conda-forge libdeflate 1.20 hcfcfb64_0 conda-forge libexpat 2.6.2 h63175ca_0 conda-forge libffi 3.4.2 h8ffe710_5 conda-forge libflac 1.4.3 h63175ca_0 conda-forge libflang 5.0.0 h6538335_20180525 conda-forge libgirepository 1.80.1 h4a5d6e9_0 conda-forge libglib 2.80.2 h0df6a38_0 conda-forge libhackrf0 2024.02.1 hcfcfb64_0 conda-forge libhamlib4 4.5.5 ha1f6986_3 conda-forge libiconv 1.17 hcfcfb64_2 conda-forge libiio 0.25 h57928b3_1 conda-forge libiio-c 0.25 h90d4e70_1 conda-forge libintl 0.22.5 h5728263_2 conda-forge libintl-devel 0.22.5 h5728263_2 conda-forge libjpeg-turbo 3.0.0 hcfcfb64_1 conda-forge liblapack 3.9.0 22_win64_openblas conda-forge liblimesuite 23.11.0 h63175ca_0 conda-forge libliquid1 1.6.0 h382ab44_1 conda-forge libm2k 0.8.0 py311h256898b_0 conda-forge libmamba 1.5.8 h3f09ed1_0 conda-forge libmambapy 1.5.8 py311h0317a69_0 conda-forge libmirisdr4 2.0.0 hcfcfb64_0 conda-forge libogg 1.3.4 h8ffe710_1 conda-forge libopenblas 0.3.27 pthreads_hc140b1d_0 conda-forge libopus 1.3.1 h8ffe710_1 conda-forge libosmodsp0 0.4.0 h857e13b_1 conda-forge libpng 1.6.43 h19919ed_0 conda-forge librsvg 2.58.0 h172eb2b_1 conda-forge librtaudio6 5.2.0 h63175ca_3 conda-forge libsndfile 1.2.2 h81429f1_1 conda-forge libsodium 1.0.18 h8d14728_1 conda-forge libsolv 0.7.29 h0ea2cb4_0 conda-forge libsqlite 3.45.3 hcfcfb64_0 conda-forge libssh2 1.11.0 h7dfc565_0 conda-forge libtiff 4.6.0 hddb2be6_3 conda-forge libusb 1.0.27 hcfcfb64_100 conda-forge libuv 1.48.0 hcfcfb64_0 conda-forge libvorbis 1.3.7 h0e60522_0 conda-forge libwebp-base 1.4.0 hcfcfb64_0 conda-forge libxcb 1.15 hcd874cb_0 conda-forge libxml2 2.12.7 h283a6d9_0 conda-forge libxslt 1.1.39 h3df6e99_0 conda-forge libzlib 1.2.13 hcfcfb64_5 conda-forge limesuite 23.11.0 hdee86e2_0 conda-forge llvm-meta 5.0.0 0 conda-forge lua 5.4.6 h57928b3_0 conda-forge lxml 5.2.2 py311h12967d8_0 conda-forge lz4-c 1.9.4 hcfcfb64_0 conda-forge lzo 2.10 hcfcfb64_1001 conda-forge m17-cxx-demod 2.3.3 hdfbca9c_3 conda-forge m2w64-gcc-libgfortran 5.3.0 6 conda-forge m2w64-gcc-libs 5.3.0 7 conda-forge m2w64-gcc-libs-core 5.3.0 7 conda-forge m2w64-gmp 6.1.0 2 conda-forge m2w64-libwinpthread-git 5.0.0.4634.697f757 2 conda-forge mako 1.3.5 pyhd8ed1ab_0 conda-forge mamba 1.5.8 py311h8cb466b_0 conda-forge markdown 3.6 pyhd8ed1ab_0 conda-forge markupsafe 2.1.5 py311ha68e1ae_0 conda-forge matplotlib 3.8.4 py311h1ea47a8_0 conda-forge matplotlib-base 3.8.4 py311h6e989c2_0 conda-forge matplotlib-inline 0.1.7 pyhd8ed1ab_0 conda-forge menuinst 2.0.2 py311h12c1d0e_0 conda-forge mirisdr 2.0.0 hcfcfb64_0 conda-forge mpg123 1.32.6 h63175ca_0 conda-forge mpir 3.0.0 he025d50_1002 conda-forge mplcursors 0.5.3 pyhd8ed1ab_0 conda-forge msys2-conda-epoch 20160418 1 conda-forge munkres 1.1.4 pyh9f0ad1d_0 conda-forge nomkl 1.0 h5ca1d4c_0 conda-forge numexpr 2.8.4 py311h0aebda5_101 conda-forge numpy 1.26.4 py311h0b4df5a_0 conda-forge openjpeg 2.5.2 h3d672ee_0 conda-forge openmp 5.0.0 vc14_1 conda-forge openssl 3.3.0 h2466b09_2 conda-forge packaging 24.0 pyhd8ed1ab_0 conda-forge pandas 2.2.2 py311hf63dbb6_0 conda-forge pango 1.52.2 h07c897b_0 conda-forge paramiko 3.4.0 pyhd8ed1ab_0 conda-forge parso 0.8.4 pyhd8ed1ab_0 conda-forge pcre2 10.43 h17e33f8_0 conda-forge pickleshare 0.7.5 py_1003 conda-forge pillow 10.3.0 py311h6819b35_0 conda-forge pip 24.0 pyhd8ed1ab_0 conda-forge pixman 0.43.4 h63175ca_0 conda-forge pkgutil-resolve-name 1.3.10 pyhd8ed1ab_1 conda-forge platformdirs 4.2.2 pyhd8ed1ab_0 conda-forge pluggy 1.5.0 pyhd8ed1ab_0 conda-forge ply 3.11 pyhd8ed1ab_2 conda-forge portaudio 19.6.0 h63175ca_9 conda-forge prompt-toolkit 3.0.42 pyha770c72_0 conda-forge pthread-stubs 0.4 hcd874cb_1001 conda-forge pthreads-win32 2.9.1 hfa6e2cd_3 conda-forge pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge pyadi-iio 0.0.16 pyhd8ed1ab_0 conda-forge pybind11-abi 4 hd8ed1ab_3 conda-forge pycairo 1.26.0 py311h99894aa_0 conda-forge pycosat 0.6.6 py311ha68e1ae_0 conda-forge pycparser 2.22 pyhd8ed1ab_0 conda-forge pyfda 0.8.4 pyh9208f05_0 conda-forge pyfiglet 0.8.post1 py_0 conda-forge pygments 2.18.0 pyhd8ed1ab_0 conda-forge pygobject 3.48.2 py311h037c6d6_0 conda-forge pylibiio 0.25 py_1 conda-forge pynacl 1.5.0 py311hd53affc_3 conda-forge pyopengl 3.1.6 pyhd8ed1ab_1 conda-forge pyparsing 3.1.2 pyhd8ed1ab_0 conda-forge pyqt 5.15.9 py311h125bc19_5 conda-forge pyqt5-sip 12.12.2 py311h12c1d0e_5 conda-forge pyqtgraph 0.13.7 pyhd8ed1ab_0 conda-forge pysocks 1.7.1 pyh0701188_6 conda-forge python 3.11.9 h631f459_0_cpython conda-forge python-dateutil 2.9.0 pyhd8ed1ab_0 conda-forge python-engineio 4.8.2 pyhd8ed1ab_0 conda-forge python-socketio 5.11.2 pyhd8ed1ab_0 conda-forge python-tzdata 2024.1 pyhd8ed1ab_0 conda-forge python_abi 3.11 4_cp311 conda-forge pytz 2024.1 pyhd8ed1ab_0 conda-forge pywin32 306 py311h12c1d0e_2 conda-forge pywin32-on-windows 0.1.0 pyh07e9846_2 conda-forge pyyaml 6.0.1 py311ha68e1ae_1 conda-forge pyzmq 26.0.3 py311h484c95c_0 conda-forge qdarkstyle 3.2.3 pyhd8ed1ab_0 conda-forge qt-main 5.15.8 hcef0176_21 conda-forge qtpy 2.4.1 pyhd8ed1ab_0 conda-forge qwt 6.2.0 h07be427_6 conda-forge radioconda_console_shortcut 1.0 0 ryanvolz referencing 0.35.1 pyhd8ed1ab_0 conda-forge reproc 14.2.4.post0 hcfcfb64_1 conda-forge reproc-cpp 14.2.4.post0 h63175ca_1 conda-forge requests 2.31.0 pyhd8ed1ab_0 conda-forge rpds-py 0.18.1 py311h533ab2d_0 conda-forge rtl-sdr 2.0.1 hcfcfb64_0 conda-forge ruamel.yaml 0.18.6 py311ha68e1ae_0 conda-forge ruamel.yaml.clib 0.2.8 py311ha68e1ae_0 conda-forge scipy 1.13.0 py311hd4686c6_1 conda-forge sdl 1.2.68 h21dd15a_0 conda-forge sdl2 2.30.2 h63175ca_0 conda-forge setuptools 69.5.1 pyhd8ed1ab_0 conda-forge simple-websocket 1.0.0 pyhd8ed1ab_1 conda-forge sip 6.7.12 py311h12c1d0e_0 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge soapysdr 0.8.1 py311h005e61a_4 conda-forge soapysdr-module-airspy 0.2.0 h23704b7_0 conda-forge soapysdr-module-airspyhf 0.2.0 h23704b7_0 conda-forge soapysdr-module-audio 0.1.1 h78c1c11_1 conda-forge soapysdr-module-bladerf 0.4.1 h23704b7_0 conda-forge soapysdr-module-hackrf 0.3.4 h23704b7_0 conda-forge soapysdr-module-lms7 23.11.0 h83e77cb_0 conda-forge soapysdr-module-netsdr 0.2.0 h78c1c11_1 conda-forge soapysdr-module-plutosdr 0.2.2 hfc7d00b_0 conda-forge soapysdr-module-redpitaya 0.1.1 h78c1c11_0 conda-forge soapysdr-module-remote 0.5.2 h23704b7_2 conda-forge soapysdr-module-rtlsdr 0.3.3 h78c1c11_2 conda-forge soapysdr-module-uhd 0.4.1 h497d21a_10 conda-forge soapysdr-module-volk-converters 0.1.1 h4df33ff_2 conda-forge spdlog 1.12.0 h64d2f7d_2 conda-forge stack_data 0.6.2 pyhd8ed1ab_0 conda-forge tk 8.6.13 h5226925_1 conda-forge toml 0.10.2 pyhd8ed1ab_0 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge tornado 6.4 py311ha68e1ae_0 conda-forge tqdm 4.66.4 pyhd8ed1ab_0 conda-forge traitlets 5.14.3 pyhd8ed1ab_0 conda-forge truststore 0.8.0 pyhd8ed1ab_0 conda-forge typing_extensions 4.11.0 pyha770c72_0 conda-forge tzdata 2024a h0c530f3_0 conda-forge ucrt 10.0.22621.0 h57928b3_0 conda-forge uhd 4.6.0.0 py311h0c75be5_0 conda-forge urllib3 2.2.1 pyhd8ed1ab_0 conda-forge vc 14.3 hcf57466_18 conda-forge vc14_runtime 14.38.33130 h82b7239_18 conda-forge volk 3.1.2 h63175ca_0 conda-forge vs2015_runtime 14.38.33130 hcb4865c_18 conda-forge watchdog 4.0.0 py311h1ea47a8_0 conda-forge wcwidth 0.2.13 pyhd8ed1ab_0 conda-forge websocket-client 1.8.0 pyhd8ed1ab_0 conda-forge werkzeug 3.0.3 pyhd8ed1ab_0 conda-forge wheel 0.43.0 pyhd8ed1ab_1 conda-forge win_inet_pton 1.1.0 pyhd8ed1ab_6 conda-forge wsproto 1.2.0 pyhd8ed1ab_0 conda-forge wxwidgets 3.2.5 h7907063_0 conda-forge xorg-libxau 1.0.11 hcd874cb_0 conda-forge xorg-libxdmcp 1.1.3 hcd874cb_0 conda-forge xz 5.2.6 h8d14728_0 conda-forge yaml 0.2.5 h8ffe710_2 conda-forge yaml-cpp 0.8.0 h63175ca_0 conda-forge zeromq 4.3.5 he1f189c_4 conda-forge zipp 3.17.0 pyhd8ed1ab_0 conda-forge zlib 1.2.13 hcfcfb64_5 conda-forge zope.event 5.0 pyhd8ed1ab_0 conda-forge zope.interface 6.3 py311ha68e1ae_0 conda-forge zstandard 0.19.0 py311ha68e1ae_0 conda-forge zstd 1.5.6 h0ea2cb4_0 conda-forge ``` ### Environment info ```shell active environment : base active env location : C:\Users\rvolz\radioconda shell level : 1 user config file : C:\Users\rvolz\.condarc populated config files : C:\Users\rvolz\radioconda\.condarc conda version : 24.5.0 conda-build version : not installed python version : 3.11.9.final.0 solver : libmamba (default) virtual packages : __archspec=1=haswell __conda=24.5.0=0 __win=0=0 base environment : C:\Users\rvolz\radioconda (writable) conda av data dir : C:\Users\rvolz\radioconda\etc\conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/win-64 https://conda.anaconda.org/conda-forge/noarch https://conda.anaconda.org/ryanvolz/win-64 https://conda.anaconda.org/ryanvolz/noarch package cache : C:\Users\rvolz\radioconda\pkgs C:\Users\rvolz\.conda\pkgs C:\Users\rvolz\AppData\Local\conda\conda\pkgs envs directories : C:\Users\rvolz\radioconda\envs C:\Users\rvolz\.conda\envs C:\Users\rvolz\AppData\Local\conda\conda\envs platform : win-64 user-agent : conda/24.5.0 requests/2.31.0 CPython/3.11.9 Windows/10 Windows/10.0.19045 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8 administrator : False netrc file : None offline mode : False ```
ccordoba12 commented 1 month ago

or perhaps more simply, remove all of the inserted code since it doesn't seem necessary for the conda setup. I could take a swing at a PR if that solution sounds acceptable.

This sounds good to me because that code is not really necessary for Conda-forge/Conda. Just my two cents.