gpt4 book ai didi

python - PyICU 可在 Django shell 中运行,但不能在 Web 服务器上运行

转载 作者:行者123 更新时间:2023-11-30 23:29:39 26 4
gpt4 key购买 nike

我在尝试访问登台服务器上 ICU 的 Collat​​or 属性时收到此错误。

AttributeError at /...
'module' object has no attribute 'Collator'

当启动 Django 的 shell 并执行完全相同的代码时,一切似乎都像在本地一样正常工作。导致错误的代码是:

import icu
collator = icu.Collator.createInstance(icu.Locale(get_language()))
objects = [i for i in sorted(objects, key=attrgetter('city'), cmp=collator.compare)]

我已通过 Ondrej's PHP5 PPA 成功安装了 ICU(libicu52、libicu-dev)以及 PyICU,无论是在本地还是在我们的临时服务器上。服务器运行 Ubuntu Server 13.10、Python 2.7.5、Django 1.5.5、Nginx 1.4.1 和 uWSGI 1.9.13。

这是完整的回溯:

File "/var/www/venv/site/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/var/www/venv/site/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/var/www/venv/site/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
86. return handler(request, *args, **kwargs)
File "/var/www/.../pages/views.py" in get
48. return StoreListView.as_view(object=self.object)(request)
File "/var/www/venv/site/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/var/www/venv/site/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
86. return handler(request, *args, **kwargs)
File "/var/www/venv/site/local/lib/python2.7/site-packages/django/views/generic/list.py" in get
124. self.object_list = self.get_queryset()
File "/var/www/.../geosearch/views.py" in get_queryset
22. objects = self.sort_objects(objects)
File "/var/www/.../geosearch/views.py" in sort_objects
59. collator = icu.Collator.createInstance(icu.Locale(get_language()))

Exception Type: AttributeError at /...
Exception Value: 'module' object has no attribute 'Collator'

我成功打印了 ICU 的 __dict__,但它给了我一个 ICUError。在本地,ICU 返回其实际属性,包括 Collat​​or。

ICUError=<class 'icu.ICUError'>,
__builtins__={'bytearray': <type 'bytearray'>,
'IndexError': <type 'exceptions.IndexError'>
[...]

代码在 Django 的 shell 中正常工作,但不能通过 Web 服务器正常工作的原因可能是什么?

最佳答案

事实证明这是uWSGI中的错误配置,与PyICU或ICU无关。我发现 uWSGI 没有使用 virtualenv 中安装的软件包,所以我再次查看了 uWSGI 配置文件。

chdir 未设置为正确的文件夹,而是指向其父文件夹。

为什么所有其他软件包都有效,我不知道。

关于python - PyICU 可在 Django shell 中运行,但不能在 Web 服务器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com