2012-09-17 57 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。我不确定他们的位置在哪里...... –