Le fuseau horaire des Informations Manquantes dans pytz?
Je vais avoir un très étrange problème avec Python pytz
: il semble avoir un catalogue incomplet de fuseaux horaires sur mon système (MacOS X 10.8.5, système de Python 2.7.5).
>>> from pytz import timezone
>>> import pytz
>>> utc = pytz.utc
>>> utc.zone
'UTC'
>>> eastern = timezone('US/Eastern')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pytz/__init__.pyc", line 182, in timezone
pytz.exceptions.UnknownTimeZoneError: 'US/Eastern'
De sorte que le fuseau horaire 'US/Eastern'
ne peut pas être trouvé.
En conséquence, j'ai essayé de regarder le catalogue de fuseaux horaires que pytz
offre:
>>> from pytz import all_timezones
>>> for tz in pytz.all_timezones:
... print tz
...
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Juba
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu
Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott
Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli
Africa/Tunis
Africa/Windhoek
America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Araguaina
America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy
America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/Salta
America/Argentina/San_Juan
America/Argentina/San_Luis
America/Argentina/Tucuman
America/Argentina/Ushuaia
America/Aruba
America/Asuncion
America/Atikokan
America/Atka
America/Bahia
America/Bahia_Banderas
America/Barbados
America/Belem
America/Belize
America/Blanc-Sablon
America/Boa_Vista
America/Bogota
America/Boise
America/Buenos_Aires
America/Cambridge_Bay
America/Campo_Grande
America/Cancun
America/Caracas
America/Catamarca
America/Cayenne
America/Cayman
America/Chicago
America/Chihuahua
America/Coral_Harbour
America/Cordoba
America/Costa_Rica
America/Creston
America/Cuiaba
America/Curacao
America/Danmarkshavn
America/Dawson
America/Dawson_Creek
America/Denver
America/Detroit
America/Dominica
America/Edmonton
America/Eirunepe
America/El_Salvador
America/Ensenada
America/Fort_Wayne
America/Fortaleza
America/Glace_Bay
America/Godthab
America/Goose_Bay
America/Grand_Turk
America/Grenada
America/Guadeloupe
America/Guatemala
America/Guayaquil
America/Guyana
America/Halifax
America/Havana
America/Hermosillo
America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Tell_City
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indianapolis
America/Inuvik
America/Iqaluit
America/Jamaica
America/Jujuy
America/Juneau
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Knox_IN
America/Kralendijk
America/La_Paz
America/Lima
America/Los_Angeles
Donc, comme vous pouvez le voir, il se termine plutôt prématurément et de nombreux de nombreux fuseaux horaires sont manquants.
J'ai essayé de résoudre ce problème en mettant à jour le Olson base de données pytz
utilise en interne:
$ sudo pip install -U pytz
Mais le problème persiste...
Toutes les idées de ce qui pourrait mal se passer ici? Ai-je raté quelque chose?
'Asia/Tokyo aussi ne fonctionne pas. Où avez-vous trouver des informations sur obsolètes fuseaux horaires?
US/Eastern
existe dans le pytz.Oublier mon premier commentaire, comme Jacob l'a dit, c'est mal. Quel est votre pytz version?
Si vous utilisez quelque chose comme virtualenv,
sudo pip
va mettre à jour le package du système au lieu d'un forfait local.
OriginalL'auteur Konstantin Greger | 2014-02-12
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas dire pourquoi votre installation de pytz est cassé, mais voici une solution possible:
pip show pytz
.open /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
(en remplacement de mon chemin avec vous si elle est différente). Cela permettra de lancer une fenêtre du Finder avec vos modules Python.OriginalL'auteur Jacob Budin
Comprendre que les données de fuseau horaire dans pytz vient de la IANA temps de la zone de la base de données, aussi connu comme le Olson base de données, ou tout simplement la base de données tz.
Dans ces données, certains identifiants (comme
US/Eastern
) sont tout simplement des pointeurs (aka "liens" ou "alias") à la réel fuseau horaire. Les liens sont là pour plusieurs raisons différentes, généralement pour des raisons de compatibilité. Dans ce cas, leUS/Eastern
fuseau horaire est un lien versAmerica/New_York
, qui est le vrai temps de la zone que vous devriez être en utilisant. (Je crois que ce commutateur est arrivé en 1993).Vous pouvez voir d'autres fuseaux horaires qui sont juste là pour assurer la compatibilité ascendante ici. Voir aussi ce tableau sur Wikipedia qui dresse la liste des fuseaux horaires, et indique clairement quelles sont les zones qui sont des liens et où ces liens pointent.
À pourquoi pytz n'est pas d'accepter compatible zones sur votre système, je ne suis pas exactement certain. Il ne devrait certainement, et même les montre dans leur documentation. Vous pouvez essayer de re-installer comme Jacob l'a suggéré. Mais même alors, vous devriez préférer
America/New_York
au lieu deUS/Eastern
.OriginalL'auteur Matt Johnson
J'ai eu une exception similaire
UnknownTimeZoneError: Can not find any timezone configuration
quand j'ai essayé de lancer mon application à l'intérieur d'un conteneur docker avec la dernière ubuntu images. Il s'est avéré quetzdata
manquait. L'installation detzdata
package fixe:(Utiliser
sudo
si vous le souhaitez)OriginalL'auteur Hieu
Pour moi, comme ça avait été facile que la mise à jour de la pytz paquet via
pip3 -install pytz --update
Sur AWS linux, j'ai eu à exécuter comme cepython3 -m pip install pytz --update
Mon application se plaint
unknown timezone 'America/Punta_Arenas'
OriginalL'auteur Michael Wood
Essayé de réinstaller, mais bug pas disparu.
Ensuite, j'ai ouvert
pytz/__init__.py
, ajouter une lignezone = 'UTC'
, le problème a disparu:C'est simple et rapide de la solution, mais vous feriez mieux de trouver le vrai problème( version? le système? ) si vous avez le temps.
OriginalL'auteur Qinsi