Skip to content

Commit

Permalink
fix: Use venv module instead of virtualenv
Browse files Browse the repository at this point in the history
Only migrate-env requires virtualenv wrapper. However, it can be
installed and run manually too. Virtualenv wrapper is patched in debian
to change the path of bins - which venv is free from.
  • Loading branch information
gavindsouza committed Aug 2, 2022
1 parent ec9d858 commit f60c2d0
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 16 deletions.
11 changes: 3 additions & 8 deletions bench/bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
restart_process_manager,
remove_backups_crontab,
get_venv_path,
get_virtualenv_path,
get_env_cmd,
)
from bench.utils.render import job, step
Expand Down Expand Up @@ -71,7 +70,7 @@ def __init__(self, path):

@property
def python(self) -> str:
return get_env_cmd("python", bench_path=self.name)
return get_env_cmd("python*", bench_path=self.name)

@property
def shallow_clone(self) -> bool:
Expand Down Expand Up @@ -347,15 +346,11 @@ def env(self, python="python3"):
click.secho("Setting Up Environment", fg="yellow")

frappe = os.path.join(self.bench.name, "apps", "frappe")
virtualenv = get_virtualenv_path(verbose=verbose)
quiet_flag = "" if verbose else "--quiet"

if not os.path.exists(self.bench.python):
if virtualenv:
self.run(f"{virtualenv} {quiet_flag} env -p {python}", cwd=self.bench.name)
else:
venv = get_venv_path(verbose=verbose, python=python)
self.run(f"{venv} env", cwd=self.bench.name)
venv = get_venv_path(verbose=verbose, python=python)
self.run(f"{venv} env", cwd=self.bench.name)

self.pip()

Expand Down
2 changes: 1 addition & 1 deletion bench/commands/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def setup_backups():
Bench(".").setup.backups()


@click.command("env", help="Setup virtualenv for bench")
@click.command("env", help="Setup Python environment for bench")
@click.option(
"--python", type=str, default="python3", help="Path to Python Executable."
)
Expand Down
8 changes: 2 additions & 6 deletions bench/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ def run_frappe_cmd(*args, **kwargs):
f = get_env_cmd("python", bench_path=bench_path)
sites_dir = os.path.join(bench_path, "sites")

is_async = False if from_command_line else True
is_async = not from_command_line
if is_async:
stderr = stdout = subprocess.PIPE
else:
Expand All @@ -247,11 +247,7 @@ def run_frappe_cmd(*args, **kwargs):
stderr=stderr,
)

if is_async:
return_code = print_output(p)
else:
return_code = p.wait()

return_code = print_output(p) if is_async else p.wait()
if return_code > 0:
sys.exit(return_code)

Expand Down
3 changes: 3 additions & 0 deletions bench/utils/bench.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ def migrate_env(python, backup=False):
path = os.getcwd()
python = which(python)
virtualenv = which("virtualenv")
if not virtualenv:
raise FileNotFoundError("`virtualenv` not found. Install it and try again.")

pvenv = os.path.join(path, nvenv)

# Clear Cache before Bench Dies.
Expand Down
2 changes: 1 addition & 1 deletion docs/bench_usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ The setup commands used for setting up the Frappe environment in context of the
- **sudoers**: Add commands to sudoers list for allowing bench commands execution without root password
- **env**: Setup virtualenv for bench. This sets up a `env` folder under the root of the bench directory.
- **env**: Setup Python virtual environment for bench. This sets up a `env` folder under the root of the bench directory.
- **redis**: Generates configuration for Redis
- **fonts**: Add Frappe fonts to system
- **config**: Generate or over-write sites/common_site_config.json
Expand Down

0 comments on commit f60c2d0

Please sign in to comment.