Open Systemcluster opened 1 month ago
It seems cloning the linked repository to another location and running rye sync
there works on the same system, but I cannot pinpoint why. I assume something must be different, even after deleting .venv
, .python-version
and the requirements
files.
Original project:
❯ pwd
Path
----
D:\Development\the-witcher-3-mod-manager
❯ git status
On branch rye
Your branch is up to date with 'origin/rye'.
❯ rye show
project: The-Witcher-3-Mod-Manager
path: D:\Development\the-witcher-3-mod-manager
venv: D:\Development\the-witcher-3-mod-manager\.venv
target python: 3.10
venv python: cpython@3.10.14
virtual: false
configured sources:
default (index: https://pypi.org/simple/)
❯ rye --version
rye 0.38.0
commit: 0.38.0 (3e3c8540f 2024-08-02)
platform: windows (x86_64)
self-python: cpython@3.12.3
symlink support: true
uv enabled: true
❯ bat .\.venv\pyvenv.cfg
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: .\.venv\pyvenv.cfg
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ home = C:\Users\Chris\AppData\Local\rye\py\cpython@3.10.14
2 │ implementation = CPython
3 │ uv = 0.2.33
4 │ version_info = 3.10.14
5 │ include-system-site-packages = false
6 │ relocatable = false
7 │ prompt = The-Witcher-3-Mod-Manager
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ bat .\.venv\rye-venv.json
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: .\.venv\rye-venv.json
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ {
2 │ "python": "cpython@3.10.14",
3 │ "venv_path": "D:\\Development\\the-witcher-3-mod-manager\\.venv"
4 │ }
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ rye sync
Reusing already existing virtualenv
Generating production lockfile: D:\Development\the-witcher-3-mod-manager\requirements.lock
Generating dev lockfile: D:\Development\the-witcher-3-mod-manager\requirements-dev.lock
Installing dependencies
× No solution found when resolving dependencies:
╰─▶ Because the current Python version (3.12.3) does not satisfy Python>=3.10,<3.11 and the-witcher-3-mod-manager==0.9.2rc0 depends on
Python>=3.10,<3.11, we can conclude that the-witcher-3-mod-manager==0.9.2rc0 cannot be used.
And because only the-witcher-3-mod-manager==0.9.2rc0 is available and you require the-witcher-3-mod-manager, we can conclude that the
requirements are unsatisfiable.
error: Installation of dependencies failed in venv at D:\Development\the-witcher-3-mod-manager\.venv. uv exited with status: exit code: 1
Second location:
❯ pwd
Path
----
D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager
❯ git status
On branch rye
Your branch is up to date with 'origin/rye'.
❯ rye show
project: The-Witcher-3-Mod-Manager
path: D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager
venv: D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager\.venv
target python: 3.10
venv python: cpython@3.10.14
virtual: false
configured sources:
default (index: https://pypi.org/simple/)
❯ rye --version
rye 0.38.0
commit: 0.38.0 (3e3c8540f 2024-08-02)
platform: windows (x86_64)
self-python: cpython@3.12.3
symlink support: true
uv enabled: true
❯ bat .\.venv\pyvenv.cfg
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: .\.venv\pyvenv.cfg
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ home = C:\Users\Chris\AppData\Local\rye\py\cpython@3.10.14
2 │ implementation = CPython
3 │ uv = 0.2.33
4 │ version_info = 3.10.14
5 │ include-system-site-packages = false
6 │ relocatable = false
7 │ prompt = The-Witcher-3-Mod-Manager
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ bat .\.venv\rye-venv.json
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: .\.venv\rye-venv.json
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ {
2 │ "python": "cpython@3.10.14",
3 │ "venv_path": "D:\\Development\\the-witcher-mm-test\\the-witcher-3-mod-manager\\.venv"
4 │ }
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ rye sync
Reusing already existing virtualenv
Generating production lockfile: D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager\requirements.lock
Generating dev lockfile: D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager\requirements-dev.lock
Installing dependencies
Resolved 26 packages in 8ms
Audited 26 packages in 0.12ms
Done!
Is there other state stored somewhere that could influence this?
My first guess was that you already had a .venv
in the first folder, and that environment used Python 3.12.3. So Rye was trying to reuse that environment even though the Python version didn't match the requirement. But you mentioned that you removed .venv
, and the behavior persisted, which would rule that out.
Yeah, the .venv
is definitely deleted. Here's the output with deleting it as the first step.
❯ rm -r -Force .\.venv\
❯ rm .\requirements*
❯ lls
.editorconfig
.git
.gitignore
.pylintrc
.vscode
build
LICENSE
main.py
pyproject.toml
Readme.md
res
setup_.py
src
tools
translations
ts.pro
ts.py
❯ pwd
Path
----
D:\Development\the-witcher-3-mod-manager
❯ rye sync
Initializing new virtualenv in D:\Development\the-witcher-3-mod-manager\.venv
Python version: cpython@3.10.14
Generating production lockfile: D:\Development\the-witcher-3-mod-manager\requirements.lock
Generating dev lockfile: D:\Development\the-witcher-3-mod-manager\requirements-dev.lock
Installing dependencies
× No solution found when resolving dependencies:
╰─▶ Because the current Python version (3.12.3) does not satisfy Python>=3.10,<3.11 and the-witcher-3-mod-manager==0.9.2rc0 depends on
Python>=3.10,<3.11, we can conclude that the-witcher-3-mod-manager==0.9.2rc0 cannot be used.
And because only the-witcher-3-mod-manager==0.9.2rc0 is available and you require the-witcher-3-mod-manager, we can conclude that the
requirements are unsatisfiable.
error: Installation of dependencies failed in venv at D:\Development\the-witcher-3-mod-manager\.venv. uv exited with status: exit code: 1
Here's the relevant output with RUST_LOG="trace"
from Installing dependencies
to where it diverges.
New location:
Installing dependencies
DEBUG uv 0.2.33
DEBUG Searching for Python interpreter in system path or `py` launcher
TRACE Cached interpreter info for Python 3.10.14, skipping probing: .venv\Scripts\python.exe
DEBUG Found `cpython-3.10.14-windows-x86_64-none` at `D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager\.venv\Scripts\python.exe` (active virtual environment)
DEBUG Using Python 3.10.14 environment at .venv\Scripts\python.exe
TRACE Checking lock for `.venv`
DEBUG Acquired lock for `.venv`
DEBUG Using request timeout of 30s
⠙ Resolving dependencies... DEBUG Found PEP 621 metadata for D:\Development\the-witcher-mm-test\the-witcher-3-mod-manager in `pyproject.toml` (the-witcher-3-mod-manager)
⠙ Resolving dependencies... DEBUG Solving with installed Python version: 3.10.14
DEBUG Adding direct dependency: charset-normalizer==3.3.2
DEBUG Adding direct dependency: colorama==0.4.6
DEBUG Adding direct dependency: fasteners==0.19
DEBUG Adding direct dependency: pyside2==5.15.2.1
DEBUG Adding direct dependency: pywin32==306
DEBUG Adding direct dependency: shiboken2==5.15.2.1
DEBUG Adding direct dependency: watchdog==4.0.1
DEBUG Adding direct dependency: the-witcher-3-mod-manager*
INFO add_decision: root @ 0a0.dev0
TRACE Fetching metadata for charset-normalizer from https://pypi.org/simple/charset-normalizer/
TRACE Fetching metadata for colorama from https://pypi.org/simple/colorama/
DEBUG Searching for a compatible version of the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-mm-test/the-witcher-3-mod-manager (*)
TRACE Fetching metadata for fasteners from https://pypi.org/simple/fasteners/
TRACE Fetching metadata for pyside2 from https://pypi.org/simple/pyside2/
TRACE Fetching metadata for pywin32 from https://pypi.org/simple/pywin32/
TRACE Fetching metadata for shiboken2 from https://pypi.org/simple/shiboken2/
TRACE Fetching metadata for watchdog from https://pypi.org/simple/watchdog/
TRACE cached request https://pypi.org/simple/colorama/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/colorama/
TRACE Received package metadata for: colorama
TRACE cached request https://pypi.org/simple/fasteners/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/fasteners/
TRACE Received package metadata for: fasteners
TRACE cached request https://pypi.org/simple/pywin32/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/pywin32/
TRACE Received package metadata for: pywin32
TRACE cached request https://pypi.org/simple/pyside2/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/pyside2/
TRACE Checking lock for `\\?\C:\Users\Chris\AppData\Local\uv\cache\built-wheels-v3\editable\c798c827ff8176b2`
DEBUG Acquired lock for `\\?\C:\Users\Chris\AppData\Local\uv\cache\built-wheels-v3\editable\c798c827ff8176b2`
TRACE Received package metadata for: pyside2
TRACE cached request https://pypi.org/simple/charset-normalizer/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/charset-normalizer/
TRACE Received package metadata for: charset-normalizer
TRACE cached request https://pypi.org/simple/shiboken2/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/shiboken2/
TRACE Received package metadata for: shiboken2
TRACE cached request https://pypi.org/simple/watchdog/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/watchdog/
TRACE Received package metadata for: watchdog
DEBUG Using cached metadata for: the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-mm-test/the-witcher-3-mod-manager
DEBUG No workspace root found, using project root
TRACE Received source distribution metadata for: the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-mm-test/the-witcher-3-mod-manager
⠙ the-witcher-3-mod-manager==0.9.2rc0 INFO add_decision: the-witcher-3-mod-manager @ 0.9.2rc0
Old location with error:
Installing dependencies
DEBUG uv 0.2.33
DEBUG Searching for Python interpreter in system path or `py` launcher
TRACE Cached interpreter info for Python 3.12.3, skipping probing: .venv\Scripts\python.exe
DEBUG Found `cpython-3.12.3-windows-x86_64-none` at `D:\Development\the-witcher-3-mod-manager\.venv\Scripts\python.exe` (active virtual environment)
DEBUG Using Python 3.12.3 environment at .venv\Scripts\python.exe
TRACE Checking lock for `.venv`
DEBUG Acquired lock for `.venv`
DEBUG Using request timeout of 30s
⠙ Resolving dependencies... DEBUG Found PEP 621 metadata for D:\Development\the-witcher-3-mod-manager in `pyproject.toml` (the-witcher-3-mod-manager)
⠙ Resolving dependencies... DEBUG Solving with installed Python version: 3.12.3
DEBUG Adding direct dependency: charset-normalizer==3.3.2
DEBUG Adding direct dependency: colorama==0.4.6
DEBUG Adding direct dependency: fasteners==0.19
DEBUG Adding direct dependency: pyside2==5.15.2.1
DEBUG Adding direct dependency: pywin32==306
DEBUG Adding direct dependency: shiboken2==5.15.2.1
DEBUG Adding direct dependency: watchdog==4.0.1
DEBUG Adding direct dependency: the-witcher-3-mod-manager*
INFO add_decision: root @ 0a0.dev0
TRACE Fetching metadata for charset-normalizer from https://pypi.org/simple/charset-normalizer/
DEBUG Searching for a compatible version of the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-3-mod-manager (*)
TRACE Fetching metadata for colorama from https://pypi.org/simple/colorama/
TRACE Fetching metadata for fasteners from https://pypi.org/simple/fasteners/
TRACE Fetching metadata for pyside2 from https://pypi.org/simple/pyside2/
TRACE Fetching metadata for pywin32 from https://pypi.org/simple/pywin32/
TRACE Fetching metadata for shiboken2 from https://pypi.org/simple/shiboken2/
TRACE Fetching metadata for watchdog from https://pypi.org/simple/watchdog/
TRACE cached request https://pypi.org/simple/colorama/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/colorama/
TRACE Received package metadata for: colorama
TRACE cached request https://pypi.org/simple/fasteners/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/fasteners/
TRACE Received package metadata for: fasteners
TRACE cached request https://pypi.org/simple/pywin32/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/pywin32/
TRACE Checking lock for `\\?\C:\Users\Chris\AppData\Local\uv\cache\built-wheels-v3\editable\67b2a1188c8c9744`
TRACE Received package metadata for: pywin32
DEBUG Acquired lock for `\\?\C:\Users\Chris\AppData\Local\uv\cache\built-wheels-v3\editable\67b2a1188c8c9744`
TRACE cached request https://pypi.org/simple/pyside2/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/pyside2/
TRACE Received package metadata for: pyside2
TRACE cached request https://pypi.org/simple/shiboken2/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/shiboken2/
TRACE Received package metadata for: shiboken2
TRACE cached request https://pypi.org/simple/charset-normalizer/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/charset-normalizer/
TRACE Received package metadata for: charset-normalizer
TRACE cached request https://pypi.org/simple/watchdog/ is storable because its response has a 'public' cache-control directive
TRACE freshness lifetime found via cache-control max age setting: 600s
DEBUG Found fresh response for: https://pypi.org/simple/watchdog/
TRACE Received package metadata for: watchdog
DEBUG Using cached metadata for: the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-3-mod-manager
DEBUG No workspace root found, using project root
TRACE Received source distribution metadata for: the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-3-mod-manager
DEBUG No compatible version found for: Python
INFO Start conflict resolution because incompat satisfied:
Python >=3.10, <3.11 is forbidden
INFO prior cause: the-witcher-3-mod-manager ==0.9.2rc0 is forbidden
INFO backtrack to DecisionLevel(1)
DEBUG Searching for a compatible version of the-witcher-3-mod-manager @ file:///D:/Development/the-witcher-3-mod-manager (<0.9.2rc0 | >0.9.2rc0)
DEBUG No compatible version found for: the-witcher-3-mod-manager
INFO Start conflict resolution because incompat satisfied:
the-witcher-3-mod-manager <0.9.2rc0 | >0.9.2rc0 is forbidden
INFO prior cause: the-witcher-3-mod-manager * is forbidden
INFO prior cause: root ==0a0.dev0 is forbidden
× No solution found when resolving dependencies:
╰─▶ Because the current Python version (3.12.3) does not satisfy Python>=3.10,<3.11 and the-witcher-3-mod-manager==0.9.2rc0 depends on
Python>=3.10,<3.11, we can conclude that the-witcher-3-mod-manager==0.9.2rc0 cannot be used.
And because only the-witcher-3-mod-manager==0.9.2rc0 is available and you require the-witcher-3-mod-manager, we can conclude that the
requirements are unsatisfiable.
error: Installation of dependencies failed in venv at D:\Development\the-witcher-3-mod-manager\.venv. uv exited with status: exit code: 1
Looking at those logs it's obvious the issue is with ~\AppData\Local\uv\cache
. It's picking the cached Python 3.12.3
immediately without considering the project restraints.
Workaround: Removing the cache directory makes rye sync
work.
(Is there a subcommand for clearing the cache? I couldn't find one without spending too much time looking.)
I won't upload the cache
directory here as it's over 2GB, but I can upload a subset if necessary.
I found an easy way to reproduce this issue. The general configuration of my installation can be seen in the above comments where relevant.
Create a new directory, here I'll use rye-py-ver
.
mkdir rye-py-ver
Create a pyproject.toml
with a requires-python
of >=3.12
.
[project]
name = "rye-py-ver"
description = "Error repro for Rye"
version = "0.1"
requires-python = ">=3.12"
Now run rye sync
to create the .venv
.
Then delete the .venv
and any other file that rye
created so just the pyproject.toml
is left again.
Next edit the pyproject.toml
and set requires-python
to >=3.10,<3.11
.
[project]
#...
requires-python = ">=3.10,<3.11"
Now run rye sync
again. It will fail with the error reported here.
❯ rye sync
Initializing new virtualenv in D:\Development\rye-py-ver\.venv
Python version: cpython@3.10.14
Generating production lockfile: D:\Development\rye-py-ver\requirements.lock
Generating dev lockfile: D:\Development\rye-py-ver\requirements-dev.lock
Installing dependencies
× No solution found when resolving dependencies:
╰─▶ Because the current Python version (3.12.3) does not satisfy Python>=3.10,<3.11 and rye-py-ver==0.1 depends on Python>=3.10,<3.11, we can
conclude that rye-py-ver==0.1 cannot be used.
And because only rye-py-ver==0.1 is available and you require rye-py-ver, we can conclude that the requirements are unsatisfiable.
error: Installation of dependencies failed in venv at D:\Development\rye-py-ver\.venv. uv exited with status: exit code: 1
@charliermarsh I think the issue should be easy to locate with this info.
Thanks, that's helpful! I'll give it a try when I have a free moment.
Ugh, bad news -- this actually didn't fail for me. On the second sync, I got:
❯ rye sync
Initializing new virtualenv in /Users/crmarsh/workspace/puffin/rye-py-ver/.venv
Python version: cpython@3.10.9
Generating production lockfile: /Users/crmarsh/workspace/puffin/rye-py-ver/requirements.lock
Generating dev lockfile: /Users/crmarsh/workspace/puffin/rye-py-ver/requirements-dev.lock
Installing dependencies
Resolved 1 package in 0.66ms
Built rye-py-ver @ file:///Users/crmarsh/workspace/puffin/rye-py-ver
Prepared 1 package in 963ms
Installed 1 package in 0.79ms
+ rye-py-ver==0.1 (from file:///Users/crmarsh/workspace/puffin/rye-py-ver)
Done!
❯ rye --version
rye 0.38.0
commit: 0.38.0 (3e3c8540f 2024-08-02)
platform: macos (aarch64)
self-python: cpython@3.12.3
symlink support: true
uv enabled: true
Can you try it on Windows? I also can't reproduce it with Linux, but on Windows it reproduces every time. I can try on macOS later as well, but I assume the issue is Windows only.
Ah ok. Yes I can try it on Windows but not today (don't have my Windows machine with me).
I am also experiencing the same issue as described in this issue.
OS: Windows11 platform: win-amd64
Even after changing the project version from >=3.12,<3.13 to >=3.11,<3.12 and completely removing and reinstalling the .venv, the current project is still recognized as version 3.12.4.
I'll try to test it out today now that I'm back home.
I'm also experiencing this issue on the Windows platform, is there any follow up on this now?
+1. Similar issues faced on Windows. Tried pinning a lower version repeatedly and deleting and resyncing the venv. 'rye show' shows the version I pinned (3.11.9) but when I sync and install a dependency I get the same error as described above.
Steps to Reproduce
In a project that requires a lower Python version than the system Python (or
self-python
),rye sync
will fail with unsatisfiable requirements.It seems to be using the default Python for this step even though it should be using the project Python.
Reproducible with
this project. It's an older project and that branch is experimental, it will fail to build, but it should still succeed to sync.these steps.I don't have this issue with
rye
on a Linux system whereself-python
is3.10
, andpdm
runs on the project without issues.Extracted from #1291, please transfer this issue to the repo where it's most appropriate.
Expected Result
Actual Result
Version Info
Stacktrace