2

私は 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
4

1 に答える 1

3

問題は、Python 3.0 以降を使用していて、2.7 以前とのみ互換性のあるライブラリを使用しようとしていることです。

特定の問題は、トレースバックが指す行です。

except TypeError, e:

この構文は 2.6 で廃止され、(より柔軟で一貫性のある) 新しい構文が採用されました。

except TypeError as e:

3.0 以降では、非推奨の構文はまったく許可されなくなりました。

したがって、このライブラリを使用したい場合は、誰かが移植する必要があります — あなた、作者、または他の誰か。を実行する2to3か、各ステートメントを手動で修正するだけexceptかもしれませんが、特にこのライブラリがすべて Unicode に関するものであることを考えると、それ以上のことを行う必要があるかもしれません。


ただし、Python 3.x には 2.x と同じ問題がないことに注意してください。csvモジュールの text/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]
é ñ

はバッファではなくUnicodeバッファであるutf-8ため、指定する必要さえなかったことに注意してください。コーディングについてまったく心配する必要はありません。StringIOstrbytes


Python 3.x を実行していることさえ知らなかった場合 (たとえば、Python 3.x をインストールしたことは知っていたが、Apple のプリインストールされた Python 2.7 を PATH の上位に置くように注意していた場合)、これが発生する一般的な理由が 3 つあります。 .

  • pipApple の Python には;が付属していません。一般的な Python 3.x インストーラーとパッケージはすべてそうです。pipしたがって、 2.7 をインストールしていない場合、所有しているのは 3.x だけです。

  • Apple の Python は、のようなスクリプトをインストールpipします/usr/local/bin。人気のある Python 3.x インストーラーとパッケージのいくつかも同様です。したがって、最近インストールした方が勝ちます。(3.x は としても利用できるはずなので、通常は 2.7 で/usr/local/bin/pip3上書きしても問題ありません...が へのシンボリック リンクでない限り)。/usr/local/bin/pippip3pip

  • sudoはユーザー環境の大部分を意図的に破棄するためPATH、自分で実行する場合は 2.7 の方が高くなる可能性がありますが、で実行する場合はそうではありませんsudo

于 2013-06-12T23:18:50.253 に答える