May-09-2023, 09:49 PM
I have several python scripts. Each script starts with a shebang line of #!/usr/local/bin/python3. To execute my scripts I simply enter ./scriptname.py.
I want to start using virtual environments to keep the dependencies of each script separate for each script, but I don't want to lose the ability to start the script from bash with ./scriptname.py. Is this possible?
Take the following directory structure:
How would I specify the virtual environment for the script dumplogs.py, which is run as a cron job?
Is there anything I can specify in the python file itself to ensure it uses the right environment, like a different shebang line?
My issue is that several users log into this host and execute python scripts using "./scriptname.py". They don't use "python scriptname.py". Adding the requirement to activate the virtual environment will not be acceptable to the users.
Another issue is that some scripts will trigger another script using Popen. I believe that this runs the second script in a new instance of bash, meaning that it doesn't use the originals scripts virtual environment nor activate the correct environment for the second script.
Is venv even an option for me, or should I stick to running all my python scripts in the systems python environment?
I want to start using virtual environments to keep the dependencies of each script separate for each script, but I don't want to lose the ability to start the script from bash with ./scriptname.py. Is this possible?
Take the following directory structure:
Output:/Parent_Directory
|
|
+--------> Project1
| |
| +----> hello1.py
| +----> venv
|
+--------> Project2
| |
| +----> hello2.py
| +----> venv
|
+--------> Cronjobs
|
+----> dumplogs.py
+----> venv
if I am in directory /Parent_Directory/Project1 and enter ./hello1.py, is there a way to ensure that the virtual environment for that script is used, or will it only use the system environment when starting scripts this way?How would I specify the virtual environment for the script dumplogs.py, which is run as a cron job?
Is there anything I can specify in the python file itself to ensure it uses the right environment, like a different shebang line?
My issue is that several users log into this host and execute python scripts using "./scriptname.py". They don't use "python scriptname.py". Adding the requirement to activate the virtual environment will not be acceptable to the users.
Another issue is that some scripts will trigger another script using Popen. I believe that this runs the second script in a new instance of bash, meaning that it doesn't use the originals scripts virtual environment nor activate the correct environment for the second script.
Is venv even an option for me, or should I stick to running all my python scripts in the systems python environment?