2012-09-17 84 views
7

我試圖分發我的開源項目Melopy,但自從我開始以來,軟件包管理一直給我帶來問題。今天,我註冊了PyPI,但在運行python setup.py sdist upload時,我遇到了以下錯誤。帶PIP的UnicodeDecodeError?

running sdist 
running check 
reading manifest template 'MANIFEST.in' 
not writing to manually maintained manifest file 'MANIFEST' 
making hard links in Melopy-0.1.0... 
Creating tar archive 
Traceback (most recent call last): 
    File "setup.py", line 19, in <module> 
    setup(**config) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup 
    dist.run_commands() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/sdist.py", line 168, in run 
    self.make_distribution() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/sdist.py", line 448, in make_distribution 
    owner=self.owner, group=self.group) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 392, in make_archive 
    owner=owner, group=group) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/archive_util.py", line 237, in make_archive 
    filename = func(base_name, base_dir, **kwargs) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/archive_util.py", line 101, in make_tarball 
    tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 1687, in open 
    _Stream(name, filemode, comptype, fileobj, bufsize), 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 431, in __init__ 
    self._init_write_gz() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 459, in _init_write_gz 
    self.__write(self.name + NUL) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tarfile.py", line 475, in __write 
    self.buf += s 
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 1: ordinal not in range(128) 

setup.py的內容如下。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

from distutils.core import setup 

config = { 
    'name': u'Melopy', 
    'author': u'Jordan Scales', 
    'author_email': u'[email protected]', 
    'description': u'Python music library', 
    'long_description': open(u'README.txt').read(), 
    'packages': ['melopy'], 
    'version': u'0.1.0', 
    'url': u'https://github.com/prezjordan/Melopy', 
    'license': 'LICENSE.txt', 
    'classifiers': [] 
} 

setup(**config) 

# Licensed under The MIT License (MIT) 
# See LICENSE file for more 
+0

'README.txt'文件的內容是什麼?如果該文件包含非ASCII字符,則應使用'codecs.open'並使用正確的編碼。 – Bakuriu

回答

4

看來你正遭遇this bug。理論上,應該通過將版本作爲常規字符串傳遞來解決問題。

+1

謝謝,我只是從'setup.py'配置的所有內容中刪除unicode。我不確定他們的位置在哪裏...... –