相关疑难解决方法(0)

使用Py2Exe编译的Python应用程序引发的UnknownTimezoneError异常

我在分发使用pytz的应用程序时遇到问题.我正在使用Py2Exe从我的Python源创建一个可执行文件.

对于我遇到的问题的简单示例,我有:pytz_test.py:

import pytz

tz_au = pytz.timezone("Australia/Sydney")
print tz_au
Run Code Online (Sandbox Code Playgroud)

在setup.py中:

from distutils.core import setup
import py2exe

setup(console=['pytz_test.py'], options={"py2exe" : { 'packages': ['pytz'], } })
Run Code Online (Sandbox Code Playgroud)

然后我运行setup.py:

python setup.py py2exe
Run Code Online (Sandbox Code Playgroud)

编译可执行文件.运行创建的pytz_test.exe我得到:

Traceback (most recent call last):
  File "pytz_test.py", line 3, in <module>
    tz_au = pytz.timezone("Australia/Sydney")
  File "pytz\__init__.pyc", line 185, in timezone
pytz.exceptions.UnknownTimeZoneError: 'Australia/Sydney'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为时区信息没有与可执行文件捆绑在一起,但我不确定如何实现它.

编辑:一个简单的解决方案是将zoneinfo目录从python site-packages目录中的pytz模块添加到library.zip.

为了自动执行此操作,我按照以下项目使用Google Transit数据Feed中的解决方案,来自:http: //code.google.com/p/googletransitdatafeed/source/browse/trunk/python/setup.py

我修改后的setup.py现在看起来像:

from distutils.core import setup …
Run Code Online (Sandbox Code Playgroud)

python py2exe pytz

13
推荐指数
1
解决办法
5345
查看次数

在Pig中使用Python UDF时,如何让Hadoop找到导入的Python模块?

我正在使用Pig(0.9.1)和用Python编写的UDF.Python脚本从标准Python库导入模块.我已经能够运行在本地模式下成功调用Python UDF的Pig scrips,但是当我在集群上运行时,看起来Pig生成的Hadoop作业无法找到导入的模块.需要做什么?

例如:

  • 是否需要在每个任务跟踪器节点上安装python(或jython)?
  • 是否需要在每个任务跟踪器节点上安装python(或jython)模块?
  • 任务跟踪器节点是否需要知道如何查找模块?
  • 如果是这样,您如何指定路径(通过环境变量 - 如何为任务跟踪器完成)?

python hadoop jython apache-pig

7
推荐指数
1
解决办法
5047
查看次数

在Pytz中缺少时区信息?

我对Python有一个非常奇怪的问题pytz:它似乎在我的系统上有一个不完整的时区目录(MacOS X 10.8.5,系统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'
Run Code Online (Sandbox Code Playgroud)

所以'US/Eastern'无法找到时区.因此,我试着看一下pytz提供的时区目录:

>>> 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 …
Run Code Online (Sandbox Code Playgroud)

python timezone pytz

7
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×3

pytz ×2

apache-pig ×1

hadoop ×1

jython ×1

py2exe ×1

timezone ×1