Search code examples
pythonenvironment-variablescondaenvironmentshebang

How to use path of current conda environment's python as shebang for a script?


Let's say you have 2 conda environments: py3_env and py3_clone_env

If you have a script.py with the following structure:

#![shebang]
import sys
def main():
    print("hello world", file=sys.stdout)
if __name__ == "__main__":
    main()

Is it possible to have the shebang be a variable that is determined from the current conda environment?

For example:

From py3_env environment:

#!~/anaconda/envs/py3_env/bin/python

and from py3_clone_env environment:

#!~/anaconda/envs/py3_clone_env/bin/python

Solution

  • I guess what you need is #!/usr/bin/env python:

    #!/usr/bin/env python
    import sys
    print(sys.executable)
    

    In this case, python is the python based on current PATH environment variables. So it is your current virtualenv's python.