为Python安装unicode csv?

2024-09-25 04:24:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我是github的新手,正在尝试安装unicodecsv(https://github.com/jdunck/python-unicodecsv)。

我在努力

sudo pip install -e git://github.com/jdunck/python-unicodecsv.git#egg=unicodecsv

但我收到一条错误信息。我可能做错了一个人,有人能帮忙吗?

Obtaining unicodecsv from git+git://github.com/jdunck/python-unicodecsv.git#egg=unicodecsv
  Cloning git://github.com/jdunck/python-unicodecsv.git to ./src/unicodecsv
  Running setup.py egg_info for package unicodecsv
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/Users/dave/Dropbox/Promoter/working/src/unicodecsv/setup.py", line 5, in <module>
        version = __import__('unicodecsv').__version__
      File "unicodecsv/__init__.py", line 49
        except TypeError, e:
                        ^
    SyntaxError: invalid syntax
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/Users/dave/Dropbox/Promoter/working/src/unicodecsv/setup.py", line 5, in <module>

    version = __import__('unicodecsv').__version__

  File "unicodecsv/__init__.py", line 49

    except TypeError, e:

                    ^

SyntaxError: invalid syntax

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/dave/.pip/pip.log
Davids-MacBook-Air:working dave$ sudo pip install -e git://github.com/jdunck/python-unicodecsv.git#egg=unicodecsv
Obtaining unicodecsv from git+git://github.com/jdunck/python-unicodecsv.git#egg=unicodecsv
  Updating ./src/unicodecsv clone
^[  Running setup.py egg_info for package unicodecsv
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/Users/dave/Dropbox/Promoter/working/src/unicodecsv/setup.py", line 5, in <module>
        version = __import__('unicodecsv').__version__
      File "unicodecsv/__init__.py", line 49
        except TypeError, e:
                        ^
    SyntaxError: invalid syntax
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/Users/dave/Dropbox/Promoter/working/src/unicodecsv/setup.py", line 5, in <module>

    version = __import__('unicodecsv').__version__

  File "unicodecsv/__init__.py", line 49

    except TypeError, e:

                    ^

SyntaxError: invalid syntax

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/dave/.pip/pip.log

Tags: pipinpygitgithubcomeggversion
1条回答
网友
1楼 · 发布于 2024-09-25 04:24:57

问题是,您使用的是Python3.0或更高版本,并试图使用只与2.7或更早版本兼容的库。

具体问题是回溯所指向的行:

except TypeError, e:

此语法在2.6中被弃用,取而代之的是(更加灵活和一致的)新语法:

except TypeError as e:

在3.0及更高版本中,不再允许使用不推荐的语法。

所以,如果你想使用这个库,就必须有人把它移植给你、作者或其他人。这可能只是运行^{},或者手动修复每个except语句的问题,但可能要做的事情远不止这些,特别是考虑到这个库都是关于Unicode的。


然而,值得注意的是,Python3.x并没有像2.x那样的问题。您可以传递csv模块文本/Unicode文件对象,它只处理它们。改编unicodecsv文档中的示例:

>>> import csv
>>> from io import StringIO
>>> f = StringIO()
>>> w = csv.writer(f)
>>> w.writerow(('é', 'ñ'))
>>> f.seek(0)
>>> r = csv.reader(f)
>>> row = r.next()
>>> print row[0], row[1]
é ñ

注意,我甚至不需要指定utf-8,因为StringIO是Unicode str缓冲区,而不是bytes缓冲区。你根本不用担心编码。


如果您甚至不知道自己运行的是Python3.x(如中所示,您知道自己已经安装了Python3.x,但是您很小心地将苹果预装的Python2.7放在了较高的位置),那么这可能是三个常见的原因。

  • 苹果的Python并没有附带pip;所有流行的Python 3.x安装程序和软件包都有。因此,如果您还没有安装2.7版的pip,那么您只有3.x版。

  • 苹果的Python安装类似于pip/usr/local/bin的脚本。一些流行的Python3.x安装程序和包也是如此。所以,无论你最近安装的是哪个都会赢。(3.x版本也应该是/usr/local/bin/pip3,所以用2.7版本覆盖它的/usr/local/bin/pip通常是可以的……除非pip3是指向pip的符号链接。)

  • sudo故意丢弃大部分用户环境,因此当以自己的身份运行时,2.7可能比PATH更高,但在使用sudo运行时不会。

相关问题 更多 >