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

Python

6356 readers
9 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
[–] [email protected] 26 points 4 months ago (3 children)

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

[–] [email protected] 5 points 4 months ago (1 children)

That works nicely. Thanks πŸ‘

[–] [email protected] 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.

[–] [email protected] 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.

[–] [email protected] 1 points 4 months ago

Yep. This is the way.

[–] [email protected] 1 points 4 months ago (2 children)

I think the path to venv should be absolute right?

[–] [email protected] 1 points 4 months ago

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

[–] [email protected] 1 points 4 months ago

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