Improved python executable handling

This commit is contained in:
Sven Heidemann 2021-03-17 08:55:23 +01:00
parent a1cd939aa1
commit a2313ac952
7 changed files with 21 additions and 9 deletions

View File

@ -29,7 +29,7 @@
"watchdog==2.0.2"
],
"PythonVersion": ">=3.8",
"PythonPath": "",
"PythonPath": {},
"Classifiers": []
},
"BuildSettings": {

View File

@ -48,7 +48,7 @@ class InstallService(CommandABC):
Error.error('Found invalid dependencies in cpl.json.')
return
Pip.set_executable(self._project_settings.python_path)
Pip.set_executable(self._project_settings.python_executable)
for dependency in self._project_settings.dependencies:
Console.spinner(
f'Installing: {dependency}',
@ -69,7 +69,7 @@ class InstallService(CommandABC):
:return:
"""
is_already_in_project = False
Pip.set_executable(self._project_settings.python_path)
Pip.set_executable(self._project_settings.python_executable)
if self._project_settings is None or self._build_settings is None:
Error.error('The command requires to be run in an CPL project, but a project could not be found.')

View File

@ -87,6 +87,9 @@ class NewService(CommandABC):
f'sh_cpl=={version.parse(cpl.__version__)}'
],
ProjectSettingsNameEnum.python_version.value: f'>={sys.version.split(" ")[0]}',
ProjectSettingsNameEnum.python_path.value: {
sys.platform: ''
},
ProjectSettingsNameEnum.classifiers.value: []
}

View File

@ -40,7 +40,7 @@ class UninstallService(CommandABC):
Console.error(f'Usage: cpl uninstall <package>')
return
Pip.set_executable(self._project_settings.python_path)
Pip.set_executable(self._project_settings.python_executable)
package = args[0]
is_in_dependencies = False

View File

@ -127,7 +127,7 @@ class UpdateService(CommandABC):
:param args:
:return:
"""
Pip.set_executable(self._project_settings.python_path)
Pip.set_executable(self._project_settings.python_executable)
self._check_project_dependencies()
self._check_outdated()
Pip.reset_executable()

View File

@ -30,6 +30,7 @@ class ProjectSettings(ConfigurationModelABC):
self._dependencies: Optional[list[str]] = None
self._python_version: Optional[str] = None
self._python_path: Optional[str] = None
self._python_executable: Optional[str] = None
self._classifiers: Optional[list[str]] = None
@property
@ -88,6 +89,10 @@ class ProjectSettings(ConfigurationModelABC):
def python_path(self) -> str:
return self._python_path
@property
def python_executable(self) -> str:
return self._python_executable
@property
def classifiers(self) -> list[str]:
return self._classifiers
@ -107,9 +112,11 @@ class ProjectSettings(ConfigurationModelABC):
self._license_description = settings[ProjectSettingsNameEnum.license_description.value]
self._dependencies = settings[ProjectSettingsNameEnum.dependencies.value]
self._python_version = settings[ProjectSettingsNameEnum.python_version.value]
self._python_path = settings[ProjectSettingsNameEnum.python_path.value]
if ProjectSettingsNameEnum.python_path.value in settings:
path = settings[ProjectSettingsNameEnum.python_path.value]
if ProjectSettingsNameEnum.python_path.value in settings and \
sys.platform in settings[ProjectSettingsNameEnum.python_path.value]:
path = settings[ProjectSettingsNameEnum.python_path.value][sys.platform]
if not os.path.isfile(path) and not os.path.islink(path):
if path != '' and path is not None:
Error.warn(f'{ProjectSettingsNameEnum.python_path.value} not found')
@ -118,7 +125,7 @@ class ProjectSettings(ConfigurationModelABC):
else:
path = sys.executable
self._python_path = path
self._python_executable = path
self._classifiers = settings[ProjectSettingsNameEnum.classifiers.value]
except Exception as e:

View File

@ -20,7 +20,9 @@
"discord.py==1.6.0"
],
"PythonVersion": ">=3.8",
"PythonPath": "../../../../cpl-env/bin/python3.9",
"PythonPath": {
"linux": "../../../../cpl-env/bin/python3.9"
},
"Classifiers": []
},
"BuildSettings": {