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

I can't say I'm enamoured by pipx. #1547

Open
JGFMK opened this issue Sep 17, 2024 · 3 comments
Open

I can't say I'm enamoured by pipx. #1547

JGFMK opened this issue Sep 17, 2024 · 3 comments

Comments

@JGFMK
Copy link

JGFMK commented Sep 17, 2024

I find pipx a thorn in my side and I've wasted 4+ hours today fixing stuff after a Mac OS/X Sequoia upgrade.

It messed up miniconda, my vs-code activate environements etc.

VS Code: (Command Pallete: Clear Workspace Interpreter Settings)

All this has done is make commands longer to type.
I don't like the verbosity this has introduced.

e.g:

pipx run main.py pipx

vs

python3 main.py

I'm wondering if I need yet another python3 alias to wrapper this! Why do I need pipx twice!

And don't forget I now need to annotate imports too. (They only work at top of module -not in a method - you can end up with circularity issues sometimes. So I hope the metadata (equivalent to Groovy Grape annotation) doesn't mess with the Python's logic of token resolution), where you are normally doing something like from a import c in one method and from b import c in another method. Hopefully the dependencies of a and b don't step on each other's toes more so you get cross module references.

e.g.:

# /// script
# dependencies = ["requests"]
# ///

Also if I transfer the code with the requests dependency to another module, and import that module, having put the meta tag comment in the other module, it seems it doesn't work either! pipx is terrible! You have to put the meta tag in the client. Talk about anti code once!

I was happier with virtual environments.
It took a while to figure out where it was installing things - all wasting my time.

I don't mind changes as long as they don't break things or make more work for me. This has done both! :-(

At the very least describe how doing something as simple as installing the requests module and being able to execute/debug code in VS Code so the module is found via the Run button can work as seamlessly as it did before we had pipx.

Also:

  1. Why not make
--include-deps

a default? It's infuriating having to retype and add that verbosity too.

  1. Could not make this work - zsh - Mac Sequoia.
    eval "$(register-python-argcomplete pipx)"

  2. Is there a pipx VSCode extension?
    Or can I use either the Python/Python Debugger... tweaking settings to somehow to accomodate the aforementioned verbosity? (JSON files such as

  • defaultSettings.json,
  • settings.json in ~/.vscode,
  • Application Support/Code Insider/User/settings.json
  • launch.json
    etc)

The very worst part of this though, is if I want to debug stuff in VS Code, now I am hosed. I can only run things.
I need to know how to get around this urgently!

Also posted on Stack Overflow

@mje-nz
Copy link

mje-nz commented Oct 8, 2024

I don't understand what you're trying to achieve here exactly, and I suspect the devs didn't either and that's why you didn't get any responses. It sounds like you're trying to use pipx to manage your local development environments. Pipx is a tool to help you install and run end-user applications. I'm sure trying to use it to manage your local development environments is very uncomfortable, and you should not use it for that.

In the future, you may get better responses by following the bug report template, which will ensure your issue includes the information the devs need.

@gaby
Copy link

gaby commented Oct 12, 2024

@JGFMK Agree, everytime I use pipx I have to type --include-deps and/or --include-apps. I don't understand why they are not enabled by default.

@MestreLion
Copy link

Why are you using pipx in the first place?

Pipx is a tool to download, install and run python applications as if they were external commands. In a way, it's more akin to Snap and Flatpak than to pip.

It's not very useful (or at all) in an IDE like VSCode, as an IDE usually manages Virtual Environments for you, activating them and setting the interpreter during development. And pipx run somescript.py is not very useful when you want to debug that script in an IDE. And it's not that useful when you want to run your script inside a virtual environment you (or your IDE) created yourself. Just activate it and run it!

Also, you seem to misunderstood what the script metadata is for. It's a "mini-pyproject.toml" for single-module applications. It's not a module import annotation! It's a project dependency metadata when you install a project.

For the other 2 sensible complains, about autocomplete in zsh and --include-deps by default, I suggest creating distinct, focused issues.

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

No branches or pull requests

4 participants