Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use UV as a faster pip implementation #2556

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open

Conversation

Arusekk
Copy link
Member

@Arusekk Arusekk commented Feb 28, 2025

Closes #2490

@Arusekk
Copy link
Member Author

Arusekk commented Mar 3, 2025

Okay: for some reason this breaks PLT emulation (so unicorn?), breaks it consistently, and only breaks it on py3.10.

Why? No idea yet.

@Arusekk
Copy link
Member Author

Arusekk commented Mar 3, 2025

>>> import unicorn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/.venv/lib/python3.10/site-packages/unicorn/__init__.py", line 4, in <module>
    from .unicorn import Uc, ucsubclass, uc_version, uc_arch_supported, version_bind, debug, UcError, __version__
  File "/.venv/lib/python3.10/site-packages/unicorn/unicorn.py", line 14, in <module>
    from .unicorn_py3 import *
  File "/.venv/lib/python3.10/site-packages/unicorn/unicorn_py3/__init__.py", line 1, in <module>
    from .unicorn import *
  File "/.venv/lib/python3.10/site-packages/unicorn/unicorn_py3/unicorn.py", line 236, in <module>
    uclib = __load_uc_lib()
  File "/.venv/lib/python3.10/site-packages/unicorn/unicorn_py3/unicorn.py", line 123, in __load_uc_lib
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'

Arusekk added a commit to Arusekk/unicorn that referenced this pull request Mar 3, 2025
Previous logic required old setuptools on py3.8 up to py3.11.
So if new setuptools was installed, importing unicorn always failed with
ImportError on these Python versions.

It now tries to use old setuptools on py3.8, but falls back gracefully
to not using anything.
So it works on py3.9+ fully, and on py3.8 it also works but with more
limited path discovery (I think it is enough, since no one complained
yet).

Fixes: 0c34496 ("Modify canonicals import")
Ref: unicorn-engine@0c34496
Ref: Gallopsled/pwntools#2556
@Arusekk
Copy link
Member Author

Arusekk commented Mar 3, 2025

Okay, this is a thing probably on Unicorn's side: unicorn-engine/unicorn#2122

@Arusekk
Copy link
Member Author

Arusekk commented Mar 3, 2025

Huh?

https://github.com/astral-sh/uv/blob/83f1b8b0f13713f2413ae9b96c64da0cedcf5fb8/crates/uv/src/commands/venv.rs#L354-L365

        // Resolve the seed packages.
        let requirements = if interpreter.python_tuple() >= (3, 12) {
            vec![Requirement::from(
                uv_pep508::Requirement::from_str("pip").unwrap(),
            )]
        } else {
            // Include `setuptools` and `wheel` on Python <3.12.
            vec![
                Requirement::from(uv_pep508::Requirement::from_str("pip").unwrap()),
                Requirement::from(uv_pep508::Requirement::from_str("setuptools").unwrap()),
                Requirement::from(uv_pep508::Requirement::from_str("wheel").unwrap()),
            ]
        };

It seems venv does seed itself, but not venv-less things.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Investigate UV for installation etc speedup
1 participant