Python - 无法安装包:TypeError: 不可比较类型:NoneType() >= str()
系统:Win7 64位,Python 3.4,Pycharm 3.0.2,MinGW
每次我尝试在Pycharm或者命令行中安装一个包时,都会出现这个错误:
running install
running build
running build_py
running build_ext
Traceback (most recent call last):
File "C:\Users\MyAccount\Downloads\scandir-master\scandir-master\setup.py", line 48, in <module> 'Programming Language :: Python :: Implementation :: CPython',
File "C:\Python34\lib\distutils\core.py", line 148, in setup dist.run_commands()
File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands self.run_command(cmd)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "C:\Python34\lib\distutils\command\install.py", line 554, in run self.run_command('build')
File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "C:\Python34\lib\distutils\command\build.py", line 126, in run self.run_command(cmd_name)
File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "C:\Python34\lib\distutils\command\build_ext.py", line 317, in run force=self.force)
File "C:\Python34\lib\distutils\ccompiler.py", line 1031, in new_compiler return klass(None, dry_run, force)
File "C:\Python34\lib\distutils\cygwinccompiler.py", line 282, in __init__ CygwinCCompiler.__init__ (self, verbose, dry_run, force)
File "C:\Python34\lib\distutils\cygwinccompiler.py", line 126, in __init__ if self.ld_version >= "2.10.90":
TypeError: unorderable types: NoneType() >= str()
今天早些时候,我遇到了“找不到 vcvarsall.bat”的错误,但我通过这个帖子解决了这个问题。
我觉得这个问题是因为几周前我卸载了 Visual Studio Express,因为我没有在用它。有没有办法在不重新安装 VSE 的情况下解决这个错误呢?
谢谢!
6 个回答
在Windows 7上使用Python 3.42时,我找到了解决这个问题的方法,具体可以参考这个讨论帖。方法是:进入Python34\Lib
文件夹,在右上角的搜索框里输入dist-info
,然后删除找到的所有文件夹。这个方法对我已经有效两次了,因为之前我用pip安装东西时总是出现这个讨论帖提到的错误信息。
补充一下zolointo的回答,按照你的指示安装Cython时一切顺利。我在Windows 7上用Python 3.4.1安装Kivy,而Kivy需要Cython。在下载了Cython并运行安装脚本后,我遇到了以下错误:
Cython编译问题 "错误:无法找到vcvarsall.bat"
为了解决这个错误,我开始研究,最后决定安装MinGW。如果你使用MinGW安装程序,可能会被各种可选的包、文档、许可证、二进制文件和dll搞得晕头转向。我安装了你之前提到的那些。
如果你运行:
python setup.py build_ext --inplace --compiler=mingw32'
你会看到一堆错误,最后会出现:
TypeError: unorderable types: NoneType() >= str()
为了解决这个问题,我按照zolointo的指示,把MinGW添加到PATH中,并创建了一个distutils.cfg文件。到这一步,你就可以运行Cython的setup.py,所有东西都能正常工作了!
将编译器设置为msvc(Visual Studio)
这个方法在Windows 10 x64和Python 3.5.1上测试过。
解决方案:
将编译器设置为msvc(Visual Studio)。
在"C:\Python35-32\Lib\distutils"文件夹中创建一个名为"distutils.cfg"的文件,内容如下:
[build]
compiler=msvc
[build_ext]
compiler=msvc
有人建议我试着用mingw编译一个helloworld.cpp,但结果失败了!
我按照的说明说只需要安装mingw32-gcc-g++,但对我来说没用。于是我使用了MinGW安装管理器,添加了:
- mingw-developer-toolkit
- mingw32-base
- msys-base
- mingw32-gcc-g++(之前已经安装过了)
所以正确的步骤是:
- 从这里下载mingw-get-setup.exe安装程序:http://sourceforge.net/projects/mingw/files/Installer/
- 运行它
- 安装上面提到的包
- 把c:\mingw\bin\添加到你的路径环境变量中
- 去到c:\python34\Lib\distutils\,创建一个distutils.cfg文件
打开distutils.cfg,插入两行内容
[build]
compiler=mingw32
我觉得compiler=mingw32是指mingw32.exe这个可执行文件。可是这个文件在我这里默认是不存在的!我不得不把mingw32-c++.exe复制一份,然后把它改名为mingw32.exe。
希望这能帮助到其他人!
我通过在我的虚拟环境中运行 conda install mingw
来解决这个问题,然后把
[build]
compiler=msvc
放在 Lib\distutils\distutils.cfg 文件里。