§ Rl¾j? ã óŽ — d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl m Z mZ d dlm Z mZ d dlmZ dd lmZ G d „ de¦ « ZdS )é N)ÚFeature)ÚExternalProgramFailedÚget_passenger_package_nameÚis_litespeed_running)Ú get_ui_config)ÚCL_SELECTOR_BINÚMODULES_LOGS_DIR)ÚInstallationFailedExceptionÚPackageMissingError)Úinstalled_interpreters_listé )ÚWizardInstallerc ó¢ — e Zd Zej ed¦ « Zej Z d„ Zd„ Ze d„ ¦ « Zd„ Zd„ Zd„ Zd„ Zed „ ¦ « Zd S )ÚPythonInstallerz python.logc ó$ — g }|D ]0}d| dd¦ « z }| |¦ « Œ1| j dd |¦ « ¦ « | j |Ž dS # t $ r}t ¦ « |‚d}~ww xY w)zd Install given python versions :param versions: versions of python packages z alt-pythonú.Ú z/Try to install Python package with versions: %sú,N)ÚreplaceÚappendÚ app_loggerÚinfoÚjoinÚ_install_groupsr r )ÚselfÚversionsÚgroupsÚvÚpackage_nameÚes úN/opt/cloudlinux/venv/lib64/python3.11/site-packages/clwizard/modules/python.pyÚ_install_python_versionsz(PythonInstaller._install_python_versions s¶ € ð ˆØð (ð (ˆAØ'¨!¯)ª)°C¸Ñ*<Ô*<Ñ<ˆLØ�MŠM˜,Ñ'Ô'Ð'Ð'ØŒ×ÒÐNÐPS×PXÒPXÐYaÑPbÔPbÑcÔcÐcð 7Ø ˆDÔ &Ð)Ð)Ð)Ð)øÝ$ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ6øøøøð 7øøøs Á% A1 Á1 BÁ;B  Bc ó¾ — d}t j |¦ « sdS | d|g¦ « dS # t $ r}t ¦ « |‚d}~ww xY w)a In order to make python apps work on Litespeed server we need to do run extra script see docs for details: https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_passenger :return: z9/usr/local/lsws/admin/misc/enable_ruby_python_selector.shNÚsh)ÚosÚpathÚisfileÚ_run_commandr r )r Úlitespeed_scriptr s r! Ú_configure_for_litespeed_serverz/PythonInstaller._configure_for_litespeed_server' s{ € ð WÐõ Œw�~Š~Ð.Ñ/Ô/ð ØˆFð 7Ø×Ò˜tÐ%5Ð6Ñ7Ô7Ð7Ð7Ð7øÝ$ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ6øøøøð 7øøøs ¥> ¾ AÁAÁAc ól — ddl m} n"# t $ r}t d¦ « |‚d }~ww xY w | d¦ « S )Nr )Úget_default_versionÚ lvemanagerÚpython)Úclselect.clselectctlr, ÚImportErrorr )r, r s r! Ú_get_python_default_versionz+PythonInstaller._get_python_default_version9 s\ € ð ;Ø@Ð@Ð@Ð@Ð@Ð@Ð@øÝð ;ð ;ð ;Ý% lÑ3Ô3¸Ð:øøøøð ;øøøà"Ð" 8Ñ,Ô,Ð,s ‚ ‰ (“#£(c ó — | j d|¦ « | t dddd|dg¦ « d S # t $ r}t ¦ « |‚d }~ww xY w)Nz,trying to set default python version as '%s'Úsetz --interpreterr. z--default-versionú--json)r r r( r r r )r Úversionr s r! Ú_set_python_default_versionz+PythonInstaller._set_python_default_versionB s‹ € àŒ×ÒÐKÈWÑUÔUÐUð 7Ø×Òå#ØØ#ØØ'ØØðñ ô ð ð ð øõ %ð 7ð 7ð 7Ý-Ñ/Ô/°QÐ6øøøøð 7øøøs �!A Á AÁ AÁAc óÎ — | t ¦ « ¦ « oDt ¦ « p5t ¦ « di ¦ « d¦ « S )a‡ Check that python selector is ready to work All configurations were done: - passenger package is installed We always have python27 installed, so we do not need to check if at least one interpreter is installed If the config file does not exist, we ignore the uiSettings :return: already_configured status :rtype: bool Ú uiSettingsÚ hidePythonApp)Ú_is_package_installedr r Úget)r s r! Ú_is_already_configuredz&PythonInstaller._is_already_configuredT