@nekolov

Как в случае отсутствия автоматически установить модуль в python3?

Пробую в случае отсутствия необходимого мне модуля, установить, и далее запустить мой скрипт.

try:
    import pyAesCrypt

    print('package: pyAesCrypt found')
except:
    mod_inst = subprocess.Popen("pip3  install pyAesCrypt", shell=True) 
    mod_inst.wait()

    import pyAesCrypt
    print('package: ' + package + ' installed')


Результат:
Collecting pyAesCrypt
  Using cached https://files.pythonhosted.org/packages/c5/99/ebae89da08a443d0191eff631d66b71955eec7e370e2a309d85e499ca18a/pyAesCrypt-0.4.3-py3-none-any.whl
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from pyAesCrypt) (2.6.1)
Installing collected packages: pyAesCrypt
Successfully installed pyAesCrypt-0.4.3
Traceback (most recent call last):
  File "smb.py", line 6, in <module>
    import pyAesCrypt
ModuleNotFoundError: No module named 'pyAesCrypt'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "smb.py", line 13, in <module>
    import pyAesCrypt
ModuleNotFoundError: No module named 'pyAesCrypt'
  • Вопрос задан
  • 464 просмотра
Решения вопроса 1
@nekolov Автор вопроса
Спасибо,
если мне требуется перед запуском проверять наличие необходимых бинарников в системе и в случае их отсутствия производить их установку? Есть аналогичная функция, вопрос есть ли другое более грамотное решение?

def app_installer(app):
    try:
        app_inst = subprocess.call(app)
      
    except:
        app_inst = subprocess.Popen("apt-get -y install " + app, stdout=subprocess.PIPE, shell=True) 
        app_inst.wait()
        print('application: ' + app + ' installed')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
По-моему гораздо проще делать так:

- при установке нового модуля - добавлять его в requirements.txt вместе с номерами версий
- при запуске скрипта выполнять что-то вроде:
pip install -r requirements.txt && python ./your_script.py

Будете делать это из кода - будет много головняка - от конфликта версий установленных модулей, до проблем с запуском самого кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:21
300 руб./за проект
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 18:47
10000 руб./за проект