"""Utilities for using virtualenv as library and planemo command."""
import os
import sys
from typing import Optional
from galaxy.util.commands import which
DEFAULT_PYTHON_VERSION = os.environ.get("PLANEMO_DEFAULT_PYTHON_VERSION", "3")
[docs]
def create_command(virtualenv_path: str, galaxy_python_version: Optional[str] = None) -> str:
"""If virtualenv is on Planemo's path use it, otherwise use the planemo
subcommand virtualenv to create the virtualenv.
"""
# Create a virtualenv with the selected python version.
if galaxy_python_version is None:
galaxy_python_version = DEFAULT_PYTHON_VERSION
python = which("python%s" % galaxy_python_version)
if python:
python = os.path.abspath(python)
else:
python = sys.executable or "python"
virtualenv_on_path = which("virtualenv")
if virtualenv_on_path:
command = [virtualenv_on_path, virtualenv_path, "-p", python]
else:
command = [python, "-m", "venv", virtualenv_path]
return " ".join(command)