from datetime import datetime
from zoneinfo import ZoneInfo
dt = datetime(2022, 7, 1, 13, 15, 0, tzinfo=ZoneInfo("Asia/Tokyo"))
print(dt)
エラー文言は以下の通りです。
Traceback (most recent call last):
File "C:\Users\user\PycharmProjects\Project1\lesson_1.py", line 9, in <module>
from zoneinfo import ZoneInfo
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\zoneinfo\__init__.py", line 11, in <module>
from ._common import ZoneInfoNotFoundError
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\zoneinfo\_common.py", line 24
rraise ZoneInfoNotFoundErro(f"No time zone found with key {key}")
^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax
2024/04/06 14:02
小川 慶一さんのコメント
(コメントID: 8297)
以下のコードを実行してもらえますでしょうか。
from zoneinfo import ZoneInfo, available_timezones
for index, tz_name in enumerate(available_timezones(), start=1):
tz = ZoneInfo(tz_name)
print(f"{index}. {tz_name}: {tz}")
raceback (most recent call last):
File "C:\Users\user\PycharmProjects\Project1\lesson_1.py", line 25, in <module>
from zoneinfo import ZoneInfo,available_timezones
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\zoneinfo\__init__.py", line 11, in <module>
from ._common import ZoneInfoNotFoundError
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\zoneinfo\_common.py", line 24
rraise ZoneInfoNotFoundErro(f"No time zone found with key {key}")
^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax
こたろうさんの投稿
(投稿ID: 5520)
aware な日付時刻生成で、下記がエラーになります。
tzdataはインストールしています。なんならアンインストールして再度インストールしましたがエラーになります。
エラー原因を調べましたが解決せずハマっております。
ご教示いただけますでしょうか。
エラー文言は以下の通りです。
小川 慶一さんのコメント
(コメントID: 8297)
僕の環境でやったところ、以下のような結果になりました。
486 のところで Asia/Tokyo が出てきました。
[code python]
1. Indian/Chagos: Indian/Chagos
2. America/Edmonton: America/Edmonton
3. Africa/Casablanca: Africa/Casablanca
4. Atlantic/South_Georgia: Atlantic/South_Georgia
5. Asia/Hebron: Asia/Hebron
6. America/Adak: America/Adak
7. Asia/Ujung_Pandang: Asia/Ujung_Pandang
8. Europe/Kiev: Europe/Kiev
9. America/Rankin_Inlet: America/Rankin_Inlet
10. America/Asuncion: America/Asuncion
...
481. Europe/Malta: Europe/Malta
482. Australia/Lindeman: Australia/Lindeman
483. WET: WET
484. Antarctica/South_Pole: Antarctica/South_Pole
485. America/Argentina/Catamarca: America/Argentina/Catamarca
486. Asia/Tokyo: Asia/Tokyo
487. Africa/Niamey: Africa/Niamey
488. Etc/GMT+7: Etc/GMT+7
489. America/Atka: America/Atka
490. Africa/Lubumbashi: Africa/Lubumbashi
...
588. Pacific/Auckland: Pacific/Auckland
589. Europe/Istanbul: Europe/Istanbul
590. America/Mendoza: America/Mendoza
591. America/Kentucky/Monticello: America/Kentucky/Monticello
592. America/Martinique: America/Martinique
593. Atlantic/Azores: Atlantic/Azores
594. Europe/Vatican: Europe/Vatican
595. Etc/GMT-7: Etc/GMT-7
596. Asia/Atyrau: Asia/Atyrau
597. Europe/Chisinau: Europe/Chisinau
なお、僕の試した環境での Python, tzdata に関する情報は以下のとおりです。
[code command]
(venv) PS D:\projects\experimentals\something> python --version
Python 3.11.1
(venv) PS D:\projects\experimentals\something> pip freeze -l
tzdata==2024.1
[/command]
お返事の際には、 Python のバージョン、 tzdata のバージョンもお知らせいただければと。
よろしくお願いいたします。
小川 慶一さんのコメント
(コメントID: 8298)
ひととおり実行を終えても Asia/Tokyo が見つからないようであれば、 tzdata の中身がどうもおかし...と切り分けられるかな、と思います。
こたろうさんのコメント
(コメントID: 8299)
tzdata か python が壊れているということでしょうか。
なお、pythonのバージョンとtzdataのバージョンは以下の通りです。
小川 慶一さんのコメント
(コメントID: 8300)
仮想環境が壊れている...だといちばん軽症なので、
deactivate して、 venv (というか、 .venv という名前のようですが)フォルダを削除して、それから改めて以下実行してみてもらえますか。
その後、再度コードの動作確認を。
これも、小分けにしましょう。
まずは、以下。
上記成功できたならば、次は以下。
その後、以下を試しましょう。
これでだめだと、次に怪しいのは Python そのものですが...。
あと、 tzdata の件は解決させたくはありますが、いったんこの件からは離れて先に進んでいただいてもよいです。
そのうえで、エネルギーのあるときに少しずつこの件に取り組んでみるというのも。
小川 慶一さんのコメント
(コメントID: 8301)
のあと、Pycharm で試すならば、 Pycharm は再起動してください。
でも、それだとやはりうまくいかない可能性が高いかな...。
それより、
pip install tzdata のあと、そのまま「python」と入力して python コンソールに入って、その状態で上記3つのコードを実行するのが確実だと思います。
小川 慶一さんのコメント
(コメントID: 8302)
とりあえず前に進めそうでそうでよかったです。
さっきの問題の部分、ソースコードをあたりました。
以下のものです。
https://github.com/python/cpython/blob/main/Lib/zoneinfo/_common.py
しかし案の定、「最後の更新は2年前」とのことです。
.exe が壊れていたとかインストール中に何かあったとか、そういうことだったのかもしれません…😅
こたろうさんのコメント
(コメントID: 8303)
一旦tzdataの件は置いて先に進んでいたのですが、解決したので再度awareな日付時刻を学びたいと思います。
ちなみに仮想環境についてですが、コマンドプロンプトで仮想環境を作ると venv になりますが、PycharmのPython Interpreterから仮想環境を作ると .venv になります。(ドットが付きます)
.venvで問題なくtzdataインストールしてコード実行できました。
小川 慶一さんのコメント
(コメントID: 8305)
やってみました。
おお、ホントだ!ぜんぜん気づきませんでした。
なお参考までに、僕の Pycharm はバージョン 2023.3.1 (Professional Edition) です。
なお、以下の最後の引数の部分で指定した名前のディレクトリが作られるようになっています。
Pycharmは、以下のコマンドを実行しているのでしょうね。
python -m venv env
とか
python -m venv renshu
とか、いろいろやってみてください。