尝试在 Windows 8 上安装 netCDF4 时出现“需要 Python 版本 2.7,在注册表中找不到”错误
Posted
技术标签:
【中文标题】尝试在 Windows 8 上安装 netCDF4 时出现“需要 Python 版本 2.7,在注册表中找不到”错误【英文标题】:"Python version 2.7 required, which was not found in the registry" error when attempting to install netCDF4 on Windows 8 【发布时间】:2013-10-10 18:21:16 【问题描述】:我使用 Anaconda 1.7,32 位。我从 here 下载了正确版本的 netCDF4 安装程序。
我试图将 HKEY_LOCAL_MACHINE\SOFTWARE\Python 文件夹复制到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node。没有运气。
有人知道为什么会发生这种情况吗? Anaconda 安装在默认位置 C:/.
是的,我知道 Anaconda 在软件包列表中包含 netCDF4 - 但如果您仔细观察,它仅适用于 Mac 和 Linux。
【问题讨论】:
【参考方案1】:尝试此处描述的步骤: http://avaminzhang.wordpress.com/2011/11/24/python-version-2-7-required-which-was-not-found-in-the-registry/
【讨论】:
【参考方案2】:只需从the official Python download page 下载Python 2.7.6 Windows Installer,然后启动安装包。
【讨论】:
这没什么用。仍然可能发生相同的错误,例如如果你想安装两个版本的 Python,那么 Windows 安装程序同样会失败。我认为最好看看这里的原因是什么。 @SirJane:我无法确认。我通常至少有最后一个 Python 2 和最后一个 Python 3 并排。除了 Python 2.7 和 3.5 之外,我经常有 Python 2.x 或 Python 3.x 以及不同的子版本,用于尝试某些包的某些功能或尝试解决其他包的问题。同时安装了所有版本,我从来没有遇到过像 Windows 的 Python 官方发行版那样的问题。 @SirJane:我同意这可能是 32 位与 64 位的差异。该链接指向应该可以工作的 32 位版本的 Python。 是的,对于这种情况,您的建议应该有效。但是在2.x之前安装3.x也会出现这个错误,然后安装程序没有解决问题,看下面我的小回答。【参考方案3】:我有这样的问题。解决方案很简单:
-
安装python 2.7 64位版本。
导出 HKEY_LOCAL_MACHINE\SOFTWARE\Python。
删除 Python 2.7。
插入导出的 reg 文件。
将所有 C:\Python27 重命名为 C:\Anaconda(插入您的路径)。
附:抱歉,语法不好。
【讨论】:
【参考方案4】:如果您安装的软件包位数与您的 Python 版本不同,则可能会发生此错误。要查看您的 Python 安装是 32 位还是 64 位,请参阅here。
SourceForge 或 python.org 上提供的一些超级包(例如 Scipy)适用于 32 位系统,有些适用于 64 位系统。见this answer。在 Windows 中,卸载 32 位并安装 64 位版本(如果您的安装是 32 位,则反之亦然)可以解决问题。
【讨论】:
谢谢,我有 Python 2.6.5(x64) 和 2.6 的 PSUTIL 仅在 x86 中可用。我只需要将我的 Python 版本切换到 x86【参考方案5】:我在使用 .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()
【讨论】:
你将被命名为“神谕者” 对于 python 3,只需在print
调用周围添加括号,并将 import _winreg
替换为 import winreg
即可完美运行
OK @duahime,但是注册表上的自动(以编程方式)操作根本不安全。这就是为什么人们总是建议手动解决方案。那么,您能否也写下如何手动完成所有这些操作,只需 2-3 行(通常就是全部内容)?
上帝保佑你。谢谢【参考方案6】:
我认为这真的取决于为什么会给出这个错误。这可能是位数问题,但也可能是因为a deinstaller bug 留下了注册表项。
我刚遇到这种情况是因为我的系统上需要两个版本的 Python。当我尝试安装 SCons(使用 Python2)时,.msi 安装程序失败,说它只在注册表中找到了 Python3。所以我卸载了它,结果根本没有找到 Python。令人沮丧! (解决方法:使用pip install --egg --upgrade scons
安装 SCons)
无论如何,我敢肯定这种现象是有线索的。我只是认为它适合这里,因为这是我的热门搜索结果之一。
【讨论】:
就我而言,我试图在 win32 python 上安装 amd64 包,你的评论让我大开眼界【参考方案7】:检查您尝试安装的 32/64 位。 python解释器和您尝试使用python的应用程序可能有所不同。
【讨论】:
以上是关于尝试在 Windows 8 上安装 netCDF4 时出现“需要 Python 版本 2.7,在注册表中找不到”错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 7 / 8 / 10 上安装 VB6 [重复]
我正在尝试使用“npm install mongodb”在 Windows 8 机器上为节点 js express 安装 MongoDB,出现以下错误