astral-sh / uv

An extremely fast Python package and project manager, written in Rust.
https://docs.astral.sh/uv
Apache License 2.0
20.03k stars 595 forks source link

uv pip compile does not find a package that pip-compile does (nltk==3.6) #1528

Closed merc1031 closed 6 months ago

merc1031 commented 7 months ago

uv pip compile

(test-7) ➜  tools-3 git:(master) ✗ uv pip compile --index-url https://<host>/artifactory/api/pypi/virtual-pypi/simple --no-cache --no-deps <(echo "nltk==3.6\n") -o /tmp/ci
  × No solution found when resolving dependencies:
  ╰─▶ Because there is no version of nltk==3.6 and you require nltk==3.6, we can conclude that the requirements are unsatisfiable.

pip-compile

  (test-7) ➜  tools-3 git:(master) ✗ pip-compile --index-url https://<host>/artifactory/api/pypi/virtual-pypi/simple <(echo "nltk==3.6\n") -o /tmp/ci 
WARNING: --strip-extras is becoming the default in version 8.0.0. To silence this warning, either use --strip-extras to opt into the new default or use --no-strip-extras to retain the existing behavior.
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
#    pip-compile --index-url=https://<host>/artifactory/api/pypi/virtual-pypi/simple --output-file=/tmp/ci /proc/self/fd/11
#
--index-url https://<host>/artifactory/api/pypi/virtual-pypi/simple

click==8.1.7
    # via nltk
joblib==1.3.2
    # via nltk
nltk==3.6
    # via -r /proc/self/fd/11
regex==2023.12.25
    # via nltk
tqdm==4.66.2
    # via nltk

package present in Artifactory remote pullthrough cache of pypi image

raylu commented 7 months ago

running with --verbose might help there was also a bug with relative paths that was fixed in uv 0.1.2: https://github.com/astral-sh/uv/issues/1393#issuecomment-1947772947

merc1031 commented 7 months ago
(test-7) ➜  tools-3 git:() ✗ uv --version
uv 0.1.2
(test-7) ➜  tools-3 git:() ✗ uv pip compile --verbose --index-url https://<>/artifactory/api/pypi/virtual-pypi/simple --no-cache --no-deps <(echo "nltk==3.6\n") -o /tmp/ci 
    0.002884s DEBUG uv_interpreter::virtual_env Found a virtualenv through VIRTUAL_ENV at: /home/<>/.pyenv/versions/3.10.11/envs/test-7
    0.002941s DEBUG uv_interpreter::interpreter Detecting markers for: /home/<>/.pyenv/versions/3.10.11/envs/test-7/bin/python
    0.026714s DEBUG uv::commands::pip_compile Using Python 3.10.11 interpreter at /home/<>/.pyenv/versions/3.10.11/envs/test-7/bin/python for builds
 uv_client::flat_index::from_entries 
 uv_resolver::resolver::solve 
      0.027355s   0ms DEBUG uv_resolver::resolver Solving with target Python version 3.10.11
   uv_resolver::resolver::choose_version package=root
   uv_resolver::resolver::get_dependencies package=root, version=0a0.dev0
        0.027393s   0ms DEBUG uv_resolver::resolver Adding direct dependency: nltk==3.6
   uv_resolver::resolver::choose_version package=nltk
     uv_resolver::resolver::package_wait package_name=nltk
 uv_resolver::resolver::process_request request=Versions nltk
   uv_client::registry_client::simple_api package=nltk
     uv_client::cached_client::get_cacheable 
       uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpd5nxim/simple-v0/43b1e6e9e817b452/nltk.rkyv
 uv_resolver::resolver::process_request request=Prefetch nltk ==3.6
          0.027604s   0ms  WARN uv_client::cached_client Broken cache entry at /tmp/.tmpd5nxim/simple-v0/43b1e6e9e817b452/nltk.rkyv, removing: failed to open file `/tmp/.tmpd5nxim/simple-v0/43b1e6e9e817b452/nltk.rkyv`
          0.027628s   0ms DEBUG uv_client::cached_client No cache entry for: https://<>/artifactory/api/pypi/virtual-pypi/simple/nltk/
       uv_client::cached_client::fresh_request url="https://<>/artifactory/api/pypi/virtual-pypi/simple/nltk/"
       uv_client::cached_client::new_cache file=/tmp/.tmpd5nxim/simple-v0/43b1e6e9e817b452/nltk.rkyv
       uv_client::registry_client::parse_simple_api package=nltk
         uv_client::html::parse url=Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("<>")), port: None, path: "/artifactory/api/pypi/virtual-pypi/simple/nltk/", query: None, fragment: None }
            0.308264s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
            0.308294s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
            0.308307s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
            0.308317s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
            0.308328s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
            0.308362s  33ms  WARN uv_client::registry_client Skipping file for nltk: Invalid 'requires-python' value
 uv_resolver::version_map::from_metadata 
        0.309710s 282ms DEBUG uv_resolver::resolver Searching for a compatible version of nltk (==3.6)
      0.309748s 282ms DEBUG uv_resolver::resolver No compatible version found for: nltk
  × No solution found when resolving dependencies:
  ╰─▶ Because there is no version of nltk==3.6 and you require nltk==3.6, we can conclude that the requirements are unsatisfiable.
charliermarsh commented 7 months ago

Do you mind sharing what the requires-python values look like in the index? Like if you download one of the wheels manually, and open it, and look at METADATA, what is the requires-python? It looks like it's invalid -- we do some manual correction for common mistakes, but we might be missing one here.

merc1031 commented 7 months ago

For nltk 3.6 this is what i get

(assets-3.10.11) ➜  nltk-3.6 git:(<>) ✗ rg -i requires nltk-3.6.dist-info 
nltk-3.6.dist-info/README.md
7:Language Processing. NLTK requires Python version 3.5, 3.6, 3.7, 3.8, or 3.9.

nltk-3.6.dist-info/METADATA
37:Requires-Python: >=3.5.*
38:Requires-Dist: click
39:Requires-Dist: joblib
40:Requires-Dist: regex
41:Requires-Dist: tqdm
43:Requires-Dist: numpy ; extra == 'all'
44:Requires-Dist: matplotlib ; extra == 'all'
45:Requires-Dist: pyparsing ; extra == 'all'
46:Requires-Dist: twython ; extra == 'all'
47:Requires-Dist: scikit-learn ; extra == 'all'
48:Requires-Dist: gensim (<4.0.0) ; extra == 'all'
49:Requires-Dist: requests ; extra == 'all'
50:Requires-Dist: python-crfsuite ; extra == 'all'
51:Requires-Dist: scipy ; extra == 'all'
53:Requires-Dist: requests ; extra == 'corenlp'
55:Requires-Dist: gensim (<4.0.0) ; extra == 'machine_learning'
56:Requires-Dist: numpy ; extra == 'machine_learning'
57:Requires-Dist: python-crfsuite ; extra == 'machine_learning'
58:Requires-Dist: scikit-learn ; extra == 'machine_learning'
59:Requires-Dist: scipy ; extra == 'machine_learning'
61:Requires-Dist: matplotlib ; extra == 'plot'
63:Requires-Dist: pyparsing ; extra == 'tgrep'
65:Requires-Dist: twython ; extra == 'twitter'
68:natural language processing.  NLTK requires Python 3.5, 3.6, 3.7, 3.8, or 3.9.
charliermarsh commented 6 months ago

We may have fixed this in #1529. Do you mind trying with latest?

merc1031 commented 6 months ago

I can confirm the with version 0.1.7 It has solved the issue for me!