this post was submitted on 23 Jun 2024
35 points (97.3% liked)

Python

6368 readers
16 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
 

So, I have a python script I'd like to run from time to time from the CLI (on Linux) that resides inside a venv. What's the recommended/intended way to do this?
Write a wrapper shell script and put it inside a $PATH-accessible directory that activates the virtual environment, runs the python script and deactivates the venv again? This seems a bit convoluted, but I can't think of a better way.

you are viewing a single comment's thread
view the rest of the comments
[–] lakeeffect@lemmy.world 26 points 4 months ago (3 children)

Use venv/bin/python app.py to run it.

[–] Schmerzbold@feddit.org 5 points 4 months ago (1 children)

That works nicely. Thanks πŸ‘

[–] Andy@programming.dev 2 points 4 months ago

I use my own Zsh project (zpy) to manage venvs stored like ~/.local/share/venvs/HASH-OF-PROJECT-PATH/venv, so use zpy's vpy function to launch a script with its associated Python executable ad-hoc, or add a full path shebang to the script with zpy's vpyshebang function.

vpy and vpyshebang in the docs

If anyone else is a Zsh fan and has any questions, I'm more than happy to answer or demo.

[–] Violet_McQuasional@feddit.uk 2 points 4 months ago (1 children)

This. I've experimented by using pex before and one or two other means of executable python wrappers and they suck. Just do as lakeeffect says.

[–] MajorHavoc@programming.dev 1 points 4 months ago

Yep. This is the way.

[–] kionite231@lemmy.ca 1 points 4 months ago (2 children)

I think the path to venv should be absolute right?

Just activate the venv and then put it out of your mind. Can activate it with either a relative or absolute path. Doesn't matter which

[–] lakeeffect@lemmy.world 1 points 4 months ago

Yeah, for the most part but really depends on what you’re trying to do specifically.