Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Seraphim19119 opened this issue Mar 8, 2024 · 5 comments
Labels
bug Suspected or confirmed bug language-russian Issue на русском

Comments

@Seraphim19119
Copy link

Seraphim19119 commented Mar 8, 2024

Код работает, но после компиляции начинает выдавать ошибку:
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""
@ivknv
Copy link
Owner

ivknv commented Mar 8, 2024

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

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

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

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

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

@ivknv ivknv added bug Suspected or confirmed bug language-russian Issue на русском labels Mar 8, 2024
@Seraphim19119
Copy link
Author

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

ivknv added a commit that referenced this issue Jul 3, 2024
…ror when the default session is used and the library is missing (see issue #43)
@marshme1o
Copy link

Доброго времени суток.
А можно по подробнее на счет того что именно надо делать в втором варианте, а то совсем не понятно :_

@ivknv
Copy link
Owner

ivknv commented Nov 17, 2024

А можно по подробнее на счет того что именно надо делать в втором варианте, а то совсем не понятно :_

Можно сделать так:

import yadisk
from yadisk.sessions.requests_session import RequestsSession

with yadisk.Client(token=..., session=RequestsSession()) as client:
    print(client.check_token())
    ...

В таком случае PyInstaller должен сам обнаружить все импорты без дополнительных опций.

@marshme1o
Copy link

Спасибо большое!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Suspected or confirmed bug language-russian Issue на русском
Projects
None yet
Development

No branches or pull requests

3 participants