尝试在Windows 8上安装netCDF4时,“需要Python版本2.7,在注册表中找不到”错误

时间:2013-10-03 21:31:14

标签: python windows python-2.7 install package

我使用Anaconda 1.7,32位。我从here下载了正确版本的netCDF4安装程序。

我尝试将HKEY_LOCAL_MACHINE \ SOFTWARE \ Python文件夹复制到HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node中。没有运气。

有谁知道为什么会这样? Anaconda安装在默认位置,C:/。

是的,我知道Anaconda在软件包列表中有netCDF4 - 但如果仔细观察,它只适用于Mac和Linux。

7 个答案:

答案 0 :(得分:93)

如果要安装的位数与Python版本的位数不同,则会发生此错误。要查看Python安装是32位还是64位,请参阅here

SourceForge或python.org上提供的一些超级包(例如Scipy)适用于32位系统,有些适用于64位系统。见this answer。在Windows中,卸载32位并安装64位版本(反之亦然,如果您的安装是32位)可以解决问题。

答案 1 :(得分:53)

使用.exe安装Python软件包时遇到了同样的问题(因为我使用Anaconda并且没有将Python添加到注册表中)。我通过运行此脚本解决了问题:

#
# script to register Python 2.0 or later for use with 
# Python extensions that require Python registry settings
#
# written by Joakim Loew for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm
#
# modified by Valentine Gogichashvili as described in http://www.mail-archive.com/distutils-sig@python.org/msg10512.html

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    except EnvironmentError as e:
        try:
            reg = CreateKey(HKEY_CURRENT_USER, regpath)
            SetValue(reg, installkey, REG_SZ, installpath)
            SetValue(reg, pythonkey, REG_SZ, pythonpath)
            CloseKey(reg)
        except:
            print "*** Unable to register!"
            return
        print "--- Python", version, "is now registered!"
        return
    if (QueryValue(reg, installkey) == installpath and
        QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print "=== Python", version, "is already registered!"
        return
    CloseKey(reg)
    print "*** Unable to register!"
    print "*** You probably have another Python installation!"

if __name__ == "__main__":
    RegisterPy()

答案 2 :(得分:6)

答案 3 :(得分:3)

我认为这实际上取决于为什么会出现这个错误。这可能是比特问题,但也可能是因为a deinstaller bug留下了注册表项。

我刚刚遇到这种情况,因为我的系统需要两个版本的Python。当我尝试安装SCons(使用Python2)时,.msi安装程序失败,说它只在注册表中找到了Python3。所以我卸载它,结果根本找不到Python。令人沮丧! (解决方法:使用pip install --egg --upgrade scons安装SCons)

无论如何,我确定这个现象有线索。我只是觉得它适合这里,因为这是我最热门的搜索结果之一。

答案 4 :(得分:1)

只需从Python 2.7.6 Windows Installer下载the official Python download page,然后启动安装包。

答案 5 :(得分:1)

我有这样的问题。解决方案很简单:

  1. 安装python 2.7 64位版本。
  2. 导出HKEY_LOCAL_MACHINE \ SOFTWARE \ Python。
  3. 删除Python 2.7。
  4. 插入导出的reg文件。
  5. 将所有C:\ Python27重命名为C:\ Anaconda(插入您的路径)。
  6. P.S。对不起,语法不好。

答案 6 :(得分:0)

检查您要安装的32/64位。 python解释器和尝试使用python的应用都可能有所不同。