conda / conda-lock

Lightweight lockfile for conda environments
https://conda.github.io/conda-lock/
Other
458 stars 102 forks source link

Locking dependencies fails when dependencies contain '_' in their package names #484

Open flepknor opened 10 months ago

flepknor commented 10 months ago

Checklist

What happened?

When trying to lock an environment with a pyproject.toml like so

[project]
    name = "project"
    description="project defiscription"
    license = { file = 'None' }
    requires-python = ">=3.7"

    dependencies = [
        "underscore_dependency"]

The locking fails with a PackageNotFoundError, because the package name that is searched for is underscore-dependency instead of underscore_dependency.

Conda Info

     active environment : base
    active env location : /opt/miniconda
            shell level : 1
       user config file : /home/flepknor/.condarc
 populated config files : /opt/miniconda/.condarc
                          /home/flepknor/.condarc
          conda version : 23.5.0
    conda-build version : 3.25.0
         python version : 3.9.16.final.0
       virtual packages : __archspec=1=x86_64
                          __cuda=12.2=0
                          __glibc=2.36=0
                          __linux=6.3.8=0
                          __unix=0=0
       base environment : /opt/miniconda  (writable)
      conda av data dir : /opt/miniconda/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://conda.anaconda.org/os-simopt/linux-64
                          https://conda.anaconda.org/os-simopt/noarch
                          https://conda.anaconda.org/pytorch/linux-64
                          https://conda.anaconda.org/pytorch/noarch
          package cache : /opt/miniconda/pkgs
                          /home/flepknor/.conda/pkgs
       envs directories : /home/flepknor/.conda/envs
                          /opt/miniconda/envs
               platform : linux-64
             user-agent : conda/23.5.0 requests/2.29.0 CPython/3.9.16 Linux/6.3.8-100.fc37.x86_64 fedora/37 glibc/2.36
             netrc file : None
           offline mode : False

Conda Config

No response

Conda list

# Name                    Version                   Build  Channel   
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                  2_kmp_llvm    conda-forge
appdirs                   1.4.4              pyhd3eb1b0_0    defaults
beautifulsoup4            4.12.2           py39h06a4308_0    defaults   
boltons                   23.0.0           py39h06a4308_0    defaults
brotlipy                  0.7.0           py39h27cfd23_1003    defaults
bzip2                     1.0.8                h7b6447c_0    defaults
c-ares                    1.19.0               h5eee18b_0    defaults
ca-certificates           2023.05.30           h06a4308_0    defaults
cachecontrol              0.12.11          py39h06a4308_1    defaults
cachecontrol-with-filecache 0.12.11          py39h06a4308_1    defaults
cachy                     0.3.0              pyhd3eb1b0_0    defaults
certifi                   2023.5.7         py39h06a4308_0    defaults
cffi                      1.15.1           py39h5eee18b_3    defaults
chardet                   4.0.0           py39h06a4308_1003    defaults
charset-normalizer        2.0.4              pyhd3eb1b0_0    defaults
click                     8.0.4            py39h06a4308_0    defaults
click-default-group       1.2.2            py39h06a4308_0    defaults
clikit                    0.6.2                      py_0    defaults
conda                     23.5.0           py39h06a4308_0    defaults
conda-build               3.25.0           py39h06a4308_0    defaults
conda-index               0.2.3            py39h06a4308_0    defaults
conda-lock                2.1.0              pyhd8ed1ab_0    conda-forge
conda-package-handling    2.1.0            py39h06a4308_0    defaults
conda-package-streaming   0.8.0            py39h06a4308_0    defaults   
crashtest                 0.3.1              pyhd3eb1b0_1    defaults
cryptography              39.0.1           py39h9ce1e76_2    defaults
dbus                      1.13.18              hb2f20db_0    defaults
distlib                   0.3.6            py39h06a4308_0    defaults
ensureconda               1.4.3            py39h06a4308_0    defaults
expat                     2.4.9                h6a678d5_0    defaults
filelock                  3.9.0            py39h06a4308_0    defaults
fmt                       9.1.0                hdb19cb5_0    defaults
gitdb                     4.0.7              pyhd3eb1b0_0    defaults
gitpython                 3.1.30           py39h06a4308_0    defaults
glib                      2.69.1               he621ea3_2    defaults
glob2                     0.7                pyhd3eb1b0_0    defaults
html5lib                  1.1                pyhd3eb1b0_0    defaults
icu                       58.2                 he6710b0_3    defaults
idna                      3.4              py39h06a4308_0    defaults
importlib-metadata        6.0.0            py39h06a4308_0    defaults
importlib_metadata        6.0.0                hd3eb1b0_0    defaults
jaraco.classes            3.2.1              pyhd3eb1b0_0    defaults
jeepney                   0.7.1              pyhd3eb1b0_0    defaults
jinja2                    3.1.2            py39h06a4308_0    defaults
jsonpatch                 1.32               pyhd3eb1b0_0    defaults
jsonpointer               2.1                pyhd3eb1b0_0    defaults
keyring                   23.13.1          py39h06a4308_0    defaults
krb5                      1.20.1               h143b758_1    defaults
ld_impl_linux-64          2.38                 h1181459_1    defaults
libarchive                3.6.2                h6ac8c49_2    defaults
libcurl                   8.1.2                h409715c_0    conda-forge
libedit                   3.1.20221030         h5eee18b_0    defaults
libev                     4.33                 h7f8727e_1    defaults
libffi                    3.4.4                h6a678d5_0    defaults
libgcc-ng                 13.1.0               he5830b7_0    conda-forge
liblief                   0.12.3               h6a678d5_0    defaults
libmamba                  1.4.9                h658169a_0    conda-forge                                                                                                                                                                                                                                               
libmambapy                1.4.9            py39h78efd80_0    conda-forge
libnghttp2                1.52.0               h2d74bed_1    defaults
libsolv                   0.7.24               hfc55251_1    conda-forge
libssh2                   1.10.0               hdbd6064_2    defaults
libstdcxx-ng              13.1.0               hfd8a6a1_0    conda-forge
libxml2                   2.10.3               hcbfbd50_0    defaults
libzlib                   1.2.13               hd590300_5    conda-forge
llvm-openmp               14.0.6               h9e868ea_0    defaults
lockfile                  0.12.2           py39h06a4308_0    defaults
lz4-c                     1.9.4                h6a678d5_0    defaults
mamba                     1.4.9            py39hc5d2bb1_0    conda-forge
markupsafe                2.1.1            py39h7f8727e_0    defaults
more-itertools            8.12.0             pyhd3eb1b0_0    defaults
msgpack-python            1.0.3            py39hd09550d_0    defaults
ncurses                   6.4                  h6a678d5_0    defaults
openssl                   3.1.1                hd590300_1    conda-forge
packaging                 23.0             py39h06a4308_0    defaults
pastel                    0.2.1                      py_0    defaults
patch                     2.7.6             h7b6447c_1001    defaults
patchelf                  0.17.2               h6a678d5_0    defaults
pcre                      8.45                 h295c915_0    defaults
pip                       23.1.2           py39h06a4308_0    defaults
pkginfo                   1.9.6            py39h06a4308_0    defaults
platformdirs              2.5.2            py39h06a4308_0    defaults
pluggy                    1.0.0            py39h06a4308_1    defaults
psutil                    5.9.0            py39h5eee18b_0    defaults
py-lief                   0.12.3           py39h6a678d5_0    defaults
pybind11-abi              4                    hd3eb1b0_1    defaults
pycosat                   0.6.4            py39h5eee18b_0    defaults
pycparser                 2.21               pyhd3eb1b0_0    defaults
pydantic                  1.10.8           py39h5eee18b_0    defaults
pylev                     1.3.0                      py_0    defaults
pyopenssl                 23.0.0           py39h06a4308_0    defaults
pysocks                   1.7.1            py39h06a4308_0    defaults
python                    3.9.16               h955ad1f_3    defaults
python-libarchive-c       2.9                pyhd3eb1b0_1    defaults
python_abi                3.9                      2_cp39    conda-forge
pytz                      2022.7           py39h06a4308_0    defaults
pyyaml                    6.0              py39h5eee18b_1    defaults
readline                  8.2                  h5eee18b_0    defaults
reproc                    14.2.4               h295c915_1    defaults
reproc-cpp                14.2.4               h295c915_1    defaults
requests                  2.29.0           py39h06a4308_0    defaults
ruamel.yaml               0.17.21          py39h5eee18b_0    defaults
ruamel.yaml.clib          0.2.6            py39h5eee18b_1    defaults
secretstorage             3.3.1            py39h06a4308_1    defaults
setuptools                67.8.0           py39h06a4308_0    defaults
six                       1.16.0             pyhd3eb1b0_1    defaults
smmap                     4.0.0              pyhd3eb1b0_0    defaults
soupsieve                 2.4              py39h06a4308_0    defaults
sqlite                    3.41.2               h5eee18b_0    defaults
tk                        8.6.12               h1ccaba5_0    defaults
tomli                     2.0.1            py39h06a4308_0    defaults
tomlkit                   0.11.1           py39h06a4308_0    defaults
toolz                     0.12.0           py39h06a4308_0    defaults
tqdm                      4.65.0           py39hb070fc8_0    defaults
typing-extensions         4.6.3            py39h06a4308_0    defaults
typing_extensions         4.6.3            py39h06a4308_0    defaults
tzdata                    2023c                h04d1e81_0    defaults
urllib3                   1.26.16          py39h06a4308_0    defaults
virtualenv                20.17.1          py39h06a4308_0    defaults
webencodings              0.5.1            py39h06a4308_1    defaults
wheel                     0.38.4           py39h06a4308_0    defaults
xz                        5.4.2                h5eee18b_0    defaults
yaml                      0.2.5                h7b6447c_0    defaults
yaml-cpp                  0.7.0                h295c915_1    defaults
zipp                      3.11.0           py39h06a4308_0    defaults
zlib                      1.2.13               hd590300_5    conda-forge
zstandard                 0.19.0           py39h5eee18b_0    defaults
zstd                      1.5.5                hc292b87_0    defaults

Additional Context

THe source from which I want to install the package with name underscore_dependency is a self-hosted conda channel.