ivknv / yadisk

Библиотека-клиент REST API Яндекс.Диска для Python / Yandex.Disk REST API client library for Python

Home Page:https://yadisk.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug] requests is not installed. После компиляции кода

Seraphim19119 opened this issue · comments

Код работает, но после компиляции начинает выдавать ошибку:
Traceback (most recent call last):
File "yadisk\client.py", line 227, in init
File "yadisk\import_session.py", line 47, in import_session
ModuleNotFoundError: No module named 'yadisk.sessions'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "main.py", line 3, in
File "yadisk\client.py", line 229, in init
RuntimeError: requests is not installed. Either install requests or provide a custom session

код:

import yadisk

client = yadisk.Client(token="*****")
# или
# client = yadisk.Client("<id-приложения>", "<secret-приложения>", "<токен>")

# Вы можете использовать либо конструкцию with, либо вручную вызвать client.close() в конце
with client:
    # Проверяет, валиден ли токен
    print(client.check_token())

    # Скачивает "/some-file-to-download.txt" в "downloaded.txt"
    client.download("**", "**")
  • ОС: Windows
  • Версия библиотеки yadisk: 2.1.0
  • Версия Python: 3.12.1
  • Компилировал через auto-py-to-exe: "pyinstaller --noconfirm --onefile --windowed "main.py""

Знакомая проблема, кто-то уже сообщал мне о подобном (но не гитхабе).

yadisk динамически подгружает модуль yadisk.sessions.requests_session (по умолчанию используется requests), PyInstaller этого не видит и не включает в сборку.

Тут есть 2 варианта решения:

  1. добавить опцию --hidden-import=yadisk.sessions.requests_session при сборке exe'шника
  2. явно импортировать класс RequestsSession и передать в конструкторе yadisk.Client session=RequestsSession()

Сообщение об ошибке всё равно, конечно, вводит в заблуждение, поменяю его в следующей версии.

Спасибо огромное, это и вправду помогло<3