eggplants / pixiv-bulk-downloader

Pixiv Bulk Downloader
https://pypi.org/project/pixiv-bulk-downloader
MIT License
22 stars 1 forks source link

ImportError: cannot import name 'TypedDict' #6

Closed MasaKusuda closed 3 years ago

MasaKusuda commented 3 years ago

TypedDictがimportできないエラー python>=3.8にすることで解決しそう 参考:https://docs.python.org/3/whatsnew/3.8.html#typing

pixiv-bulk-downloader on main via 🐍 v3.6.3
❯ pbd
Traceback (most recent call last):
  File "/home/masahiro/.pyenv/versions/3.6.3/bin/pbd", line 7, in <module>
    from pbd.main import main
  File "/home/masahiro/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pbd/__init__.py", line 1, in <module>
    from .base import PixivBaseDownloader  # noqa: F401
  File "/home/masahiro/.pyenv/versions/3.6.3/lib/python3.6/site-packages/pbd/base.py", line 6, in <module>
    from gppt import LoginInfo
  File "/home/masahiro/.pyenv/versions/3.6.3/lib/python3.6/site-packages/gppt/__init__.py", line 1, in <module>
    from .auth import PixivAuth  # noqa: F401
  File "/home/masahiro/.pyenv/versions/3.6.3/lib/python3.6/site-packages/gppt/auth.py", line 8, in <module>
    from .login_response_types import LoginCred, LoginInfo, PixivLoginFailed
  File "/home/masahiro/.pyenv/versions/3.6.3/lib/python3.6/site-packages/gppt/login_response_types.py", line 1, in <module>
    from typing import TypedDict
ImportError: cannot import name 'TypedDict'
MasaKusuda commented 3 years ago

python3.8.12に変更してから再度pbdをインストールし直して実行してみるが、エラー これはいまいち解決方法がわからず、localのpython側から実行するのは諦めました。 Dockerだとうまく動きました。

pixiv-bulk-downloader on main via 🐍 v3.8.12 took 6s
❯ pbd
Traceback (most recent call last):
  File "/home/masahiro/.pyenv/versions/3.8.12/bin/pbd", line 5, in <module>
    from pbd.main import main
  File "/home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages/pbd/__init__.py", line 1, in <module>
    from .base import PixivBaseDownloader  # noqa: F401
  File "/home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages/pbd/base.py", line 6, in <module>
    from gppt import LoginInfo
  File "/home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages/gppt/__init__.py", line 1, in <module>
    from .auth import PixivAuth  # noqa: F401
  File "/home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages/gppt/auth.py", line 9, in <module>
    from .selenium import GetPixivToken
  File "/home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages/gppt/selenium.py", line 35, in <module>
    REQUESTS_KWARGS: dict[str, Any] = {
TypeError: 'type' object is not subscriptable
eggplants commented 3 years ago
eggplants commented 3 years ago
pip show pixiv-bulk-downloader

はどうなりますか? おそらく古いpixiv-bulk-downloaderが入っていると思います。

MasaKusuda commented 3 years ago

以下の通りになります。

❯ pip show pixiv-bulk-downloader
Name: pixiv-bulk-downloader
Version: 2.1
Summary: Pixiv Bulk Downloader
Home-page: https://github.com/eggplants/pixiv-bulk-downloader
Author: eggplants
Author-email: None
License: MIT
Location: /home/masahiro/.pyenv/versions/3.8.12/lib/python3.8/site-packages
Requires: stdiomask, gppt, pixivpy
Required-by:
MasaKusuda commented 3 years ago

README.mdに記載されている以下の点について、何もしていないのが原因かもしれません。 具体的にどのようにsetupするかご教授いただけますでしょうか。

Note: In advance, please setup google-chrome-stable + selenium + webdriver

eggplants commented 3 years ago

エラーの理由がわかりました。

TypeError: 'type' object is not subscriptable

gpptでは型注釈にdictを使ってますが、これはPython3.9からの書き方なので、「型の文脈で関数を使うな」と怒られています。

eggplants commented 3 years ago

v2.2で思い切ってpython_requiresをPython3.9以上にしました。

eggplants commented 3 years ago

See: https://pypi.org/project/pixiv-bulk-downloader/2.2/