【问题标题】:pip cant install radiopypip 无法安装 radiopy
【发布时间】:2016-08-18 06:05:32
【问题描述】:

我试过了 pip install radiopy

追溯:

C:\Users\олег\Downloads>pip install radiopy
Collecting radiopy
Using cached radio

py-0.6.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\29F0~1\AppData\Local\Temp\pip-build-blxa2oob\radiopy\setup.py, line 23, in <module>
version=get_version('radio.py'),
File "C:\Users\29F0~1\AppData\Local\Temp\pip-build-blxa2oob\radiopy\setup.py
return __version__
NameError: name '__version__' is not defined
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in       
C:\Users\29F0~1\AppData\Local\Temp\pip-build-blxa2oob\radiopy\

我也试过了:
easy_install radiopy

追溯:

File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 168, in save_modules 
saved_exc.resume()
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 143, in resume
six.reraise(type, exc, self._tb)
File "c:\python34\lib\site-packages\pkg_resources\_vendor\six.py", line 685, in reraise
raise value.with_traceback(tb)
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 156, in save_modules
yield saved
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 197, in setup_context  yield
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 246, in run_setup
DirectorySandbox(setup_dir).run(runner)
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 276, in run return func()
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 245, in runner
_execfile(setup_script, ns)
File "c:\python34\lib\site-packages\setuptools\sandbox.py", line 47, in _execfile

exec(code, globals, locals)
File "C:\Users\29F0~1\AppData\Local\Temp\easy_install-laprrvio\radiopy-0.6\setup.py", line 23, in <module>
File "C:\Users\29F0~1\AppData\Local\Temp\easy_install-laprrvio\radiopy-0.6\setup.py", line 19, in get_version
NameError: name '__version__' is not defined

最近,
C:\Users\олег&gt;pip install C:\\Users\\олег\\Downloads\\radiopy-0.6.tar.gz

追溯:

C:\Users\олег>pip install C:\\Users\\олег\\Downloads\\radiopy-0.6.tar.gz
Processing c:\users\олег\downloads\radiopy-0.6.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\29F0~1\AppData\Local\Temp\pip-8evw0uk0-build\setup.py", line 23, in <module>
version=get_version('radio.py'),
File "C:\Users\29F0~1\AppData\Local\Temp\pip-8evw0uk0-build\setup.py", line 19, in get_version
return __version__
NameError: name '__version__' is not defined
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\29F0~1\AppData\Local\Temp\pip-8evw0uk0-build\

我该如何解决这个问题?

【问题讨论】:

    标签: python installation pip


    【解决方案1】:

    该模块似乎只支持 Python 2。 setup.py 包含一个非常可疑的 hack 来评估 __version__ 变量:

    def get_version(filename):
        """Extract __version__ from file by parsing it."""
        with open(filename) as fp:
            for line in fp:
                if line.startswith('__version__'):
                    exec(line)
                    return __version__
    

    它的作用是找到以__version__开头的行,即__version__ = '0.6',然后用exec作为动态代码执行,这样就可以了。然而在 Python 3 中,这修改局部变量,因此__version__ 没有在下一行定义。

    即使您修复了此错误,您也会遇到无数其他错误,因为该软件包根本不支持 Python-3。最简单的解决方案是使用 Python 2。但即便如此,我也不太确定这是否在 Windows 上正常工作,因为它是为 mplayer/mencoder 套件编写的,并且似乎非常注重 Linux/POSIX代码。

    【讨论】:

    • 它在 Python 3 中绝对行不通,而且如果没有大量的修复也不会。你的 Windows 上甚至有 this mplayer 吗?即使那样,我个人也不会浪费时间安装 Python 2 并尝试这个,但我并没有禁止你:D