return True
if text.lower() in ['n', 'no', 'f', 'false', 'off', '0']:
return False
- raise ValueError(f"{text} is not convertable to boolean")
+ raise ValueError(f"{text} is not convertible to boolean")
class Flag(collections.namedtuple("FlagBase", "name, cast")):
@property
]
-def _get_python_binary(exec_prefix):
+def _get_python_binary(exec_prefix, pyver):
try:
default = vim.eval("g:pymode_python").strip()
except vim.error:
return default
if sys.platform[:3] == "win":
return exec_prefix / 'python.exe'
- return exec_prefix / 'bin' / 'python3'
+ bin_path = exec_prefix / "bin"
+ exec_path = (bin_path / f"python{pyver[0]}.{pyver[1]}").resolve()
+ if exec_path.exists():
+ return exec_path
+ # It is possible that some environments may only have python3
+ exec_path = (bin_path / f"python3").resolve()
+ if exec_path.exists():
+ return exec_path
+ raise ValueError("python executable not found")
def _get_pip(venv_path):
if sys.platform[:3] == "win":
return True
pyver = sys.version_info[:3]
- if pyver < (3, 7):
- print("Sorry, Black requires Python 3.7+ to run.")
+ if pyver < (3, 8):
+ print("Sorry, Black requires Python 3.8+ to run.")
return False
from pathlib import Path
_executable = sys.executable
_base_executable = getattr(sys, "_base_executable", _executable)
try:
- executable = str(_get_python_binary(Path(sys.exec_prefix)))
+ executable = str(_get_python_binary(Path(sys.exec_prefix), pyver))
sys.executable = executable
sys._base_executable = executable
print(f'Creating a virtualenv in {virtualenv_path}...')