pytz中缺少时区信息? [英] Timezone Information Missing in pytz?

查看:59
本文介绍了pytz中缺少时区信息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用 Python 的 pytz 时遇到了一个非常奇怪的问题:我的系统(MacOS X 10.8.5,系统 Python 2.7.5)上的时区目录似乎不完整.<预><代码>>>>从 pytz 导入时区>>>进口pytz>>>utc = pytz.utc>>>UTC区域'世界标准时间'>>>东部 = 时区('美国/东部')回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中文件pytz/__init__.pyc",第 182 行,在时区pytz.exceptions.UnknownTimeZoneError: '美国/东部'

因此无法找到时区 'US/Eastern'.因此,我尝试查看 pytz 提供的时区目录:

<预><代码>>>>从 pytz 导入 all_timezones>>>对于 pytz.all_timezones 中的 tz:... 打印 tz...非洲/阿比让非洲/阿克拉非洲/亚的斯亚贝巴非洲/阿尔及尔非洲/阿斯马拉非洲/阿斯梅拉非洲/巴马科非洲/班吉非洲/班珠尔非洲/比绍非洲/布兰太尔非洲/布拉柴维尔非洲/布琼布拉非洲/开罗非洲/卡萨布兰卡非洲/休达非洲/科纳克里非洲/达喀尔非洲/Dar_es_Salaam非洲/吉布提非洲/杜阿拉非洲/El_Aaiun非洲/弗里敦非洲/哈博罗内非洲/哈拉雷非洲/约翰内斯堡非洲/朱巴非洲/坎帕拉非洲/喀土穆非洲/基加利非洲/金沙萨非洲/拉各斯非洲/利伯维尔非洲/洛美非洲/罗安达非洲/卢本巴希非洲/卢萨卡非洲/马拉博非洲/马普托非洲/马塞卢非洲/姆巴巴内非洲/摩加迪沙非洲/蒙罗维亚非洲/内罗毕非洲/恩贾梅纳非洲/尼亚美非洲/努瓦克肖特非洲/瓦加杜古非洲/新港非洲/圣多美非洲/廷巴克图非洲/的黎波里非洲/突尼斯非洲/温得和克美国/阿达克美国/安克雷奇美洲/安圭拉美洲/安提瓜美洲/阿拉瓜伊纳美国/阿根廷/布宜诺斯艾利斯美国/阿根廷/卡塔马卡美国/阿根廷/ComodRivadavia美国/阿根廷/科尔多瓦美国/阿根廷/胡胡伊美国/阿根廷/拉里奥哈美国/阿根廷/门多萨美国/阿根廷/Rio_Gallegos美国/阿根廷/萨尔塔美国/阿根廷/圣胡安美国/阿根廷/圣路易斯美国/阿根廷/土库曼美国/阿根廷/乌斯怀亚美洲/阿鲁巴美国/亚松森美国/阿提科坎美国/阿特卡美洲/巴伊亚美国/巴伊亚_班德拉斯美国/巴巴多斯美国/贝伦美国/伯利兹美国/Blanc-Sablon美国/Boa_Vista美国/波哥大美国/博伊西美国/布宜诺斯艾利斯美国/Cambridge_Bay美国/Campo_Grande美国/坎昆美洲/加拉加斯美洲/卡塔马卡美国/卡宴美国/开曼群岛美国/芝加哥美国/奇瓦瓦州美国/Coral_Harbour美洲/科尔多瓦美洲/哥斯达黎加美国/克雷斯顿美洲/库亚巴美洲/库拉索美国/丹麦港美国/道森美国/道森_克里克美国/丹佛美国/底特律美国/多米尼加美国/埃德蒙顿美国/欧洲美国/萨尔瓦多美国/恩塞纳达美国/韦恩堡美洲/福塔雷萨美国/Glace_Bay美国/Godthab美国/鹅湾美国/Grand_Turk美国/格林纳达美洲/瓜德罗普岛美洲/危地马拉美洲/瓜亚基尔美国/圭亚那美国/哈利法克斯美国/哈瓦那美国/埃莫西约美国/印第安纳州/印第安纳波利斯美国/印第安纳州/诺克斯美国/印第安纳州/马伦戈美国/印第安纳州/彼得堡美国/印第安纳州/Tell_City美国/印第安纳州/韦韦美国/印第安纳州/文森斯美国/印第安纳州/威纳马克美国/印第安纳波利斯美国/因纽维克美国/伊魁特美国/牙买加美国/胡胡伊美国/朱诺美国/肯塔基州/路易斯维尔美国/肯塔基州/蒙蒂塞洛美国/诺克斯_IN美国/克拉伦代克美国/拉巴斯美国/利马美国/洛杉矶

如您所见,它结束得相当早,并且缺少许多时区.我试图通过更新 Olson 数据库 pytz 在内部使用来克服这个问题:

$ sudo pip install -U pytz

但问题依旧...

任何想法这里可能出了什么问题?我错过了什么吗?

解决方案

我不能说为什么你的 pytz 安装被破坏了,但这里有一个可能的修复:

  1. 从 Python 包索引下载 pytz 的 .zip 存档.
  2. 在 Terminal.app 中,运行 pip show pytz.
  3. 使用它返回的路径,运行open/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python(如果不同,用你的路径替换我的路径).这将启动一个包含 Python 模块的 Finder 窗口.
  4. 找到 pytz/文件夹.打开它.
  5. 将 zoneinfo/文件夹替换为您在第 1 步中从 PyPI 下载的 .zip 存档中的 zoneinfo/文件夹.

I'm having a very weird problem with Python's pytz: it seems to have an incomplete catalog of timezones on my system (MacOS X 10.8.5, system 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'

So the timezone 'US/Eastern' can't be found. Accordingly I tried to have a look at the catalog of timezones that pytz offers:

>>> 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

So as you can see, it ends rather prematurely and many many timezones are missing. I tried to overcome this by updating the Olson database pytz uses internally:

$ sudo pip install -U pytz

But the problem persists...

Any ideas what might be going wrong here? Am I missing something?

解决方案

I cannot say why your installation of pytz is broken, but here's a possible fix:

  1. Download the .zip archive of pytz from the Python Package Index.
  2. In Terminal.app, run pip show pytz.
  3. Using the path it returns, run open /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (replacing my path with yours if different). This will launch a Finder window with your Python modules.
  4. Find the pytz/ folder. Open it.
  5. Replace the zoneinfo/ folder with the zoneinfo/ folder that's in the .zip archive you downloaded in step 1 from PyPI.

这篇关于pytz中缺少时区信息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆