【问题标题】:Python Code runs on desktop but not on cluster: UnicodeEncodeErrorPython 代码在桌面上运行但不在集群上:UnicodeEncodeError
【发布时间】:2018-06-18 09:18:46
【问题描述】:

我做了一些研究,但在网上任何地方都找不到相关主题,这就是我在这里发布问题的原因。

问题如下:我编写了一个 Python3 代码,它在我的 MacBook 上完美运行,但在我使用的集群上却没有。它总是在与此处所示完全相同的位置抛出UnicodeEncodeError

Traceback (most recent call last):
  File "B_main.py", line 8, in <module>
    import D_fuzzy_matching
  File "/home/firmdata/name/python/D_fuzzy_matching.py", line 105, in <module>
    df2[cols_to_keep].to_csv(folder4 + 'fuzzy_matches/' + item[:-1].lower() + '.txt', index=False, header=False)
  File "/home/firmdata/name/python/myvenv/lib/python3.6/site-packages/pandas/core/frame.py", line 1745, in to_csv
    formatter.save()
  File "/home/firmdata/name/python/myvenv/lib/python3.6/site-packages/pandas/io/formats/csvs.py", line 165, in save
    compression=self.compression)
  File "/home/firmdata/name/python/myvenv/lib/python3.6/site-packages/pandas/io/common.py", line 400, in _get_handle
    f = open(path_or_buf, mode, encoding=encoding)

我的 Python3 代码中对应的行是:

df2[cols_to_keep].to_csv(folder4 + 'fuzzy_matches/' + item[:-1].lower() + '.txt', index=False, header=False)

我已经检查过了,集群上的 pip 包含与我本地桌面上的 pip 完全相同的库。此外,我在桌面上使用的 Python 版本是

Python 3.6.4

而在集群上

Python 3.6.2

可用。

我可以提供的另一个信息是,为了根据我的需要设置一个可以工作的 Python 环境,我指的是虚拟环境,因为否则我无法通过 pip 安装库。

如果有人能给我一些关于我到底做错了什么的提示,我将不胜感激:)

提前致谢!

【问题讨论】:

    标签: python-3.x cluster-computing python-unicode


    【解决方案1】:

    如果集群是 *unix 机器,您可以尝试最简单的方法,生成您可能使用的所有 UTF 语言环境。

    您可以通过以下方式检查当前启用了哪些: 语言环境-a

    要添加更多语言环境,您可以使用: sudo locale-gen en_US sudo locale-gen en_US.UTF8 sudo 更新语言环境

    或者以更 Ubuntu 的方式: sudo apt-get install language-pack-(XX)

    【讨论】:

    • 非常感谢您的快速响应。我已经按照你的建议做了。由于导致问题的字符是'\xfc',它与德语中的'ü'有关,我查找了相应的本地人。在我的计算机上,它们被标记为:'de_AT de_AT.ISO8859-1 de_AT.ISO8859-15 de_AT.UTF-8 [...] de_DE.UTF-8'。在确实是 unix 机器的集群上,使用或多或少相同的语言环境(尽管拼写略有不同)(de_AT de_AT@euro de_AT.iso88591 de_AT.iso885915@euro [...] de_DE.utf8)。因此,安装更多语言环境可能没有太大意义,您怎么看?
    • 免责声明:我不是语言环境专家。变化是语言环境的变化。也可能是区域设置 used 是两台机器之间的变化。尝试使用相同的语言环境,并检查使用了哪个语言环境: locale 请注意,LC_ALL= *** 会覆盖任何其他设置,因此如果设置了它,则意味着使用了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多