安装pywin32时遇到问题

时间:2011-07-12 10:10:26

标签: python pywin32

我正在尝试为Python 2.6安装pywin32。 我安装了python,但它不在常规c:驱动器中,而是在d:驱动器上。 pywin32安装程序找不到它,我无法给它自定义路径。

我检查过,python文件夹是路径。这个问题有解决方法吗?

11 个答案:

答案 0 :(得分:15)

更新2017-06-14 似乎与python 3.6相同的问题重新开始。但我发现了一个很好的建议:有一个pywin32的pip版本:只需使用

pip install pypiwin32

它没有安装最新版本(sourceforge目前有221个,它安装了220个),但它没有注册表修改或任何其他黑客工作。

更新2017-02-01: 我刚尝试在Windows 10(64位)上使用Python 3.5.2 32位安装build 220,一切都运行良好,无需修改注册表。因此,最好的建议可能是使用最新的构建而不是构建219。

旧解决方案(构建219):

今天我尝试在Windows 8.1下安装pywin32和Python 3.5 win32时遇到了同样的问题。

py 3.5的所有安装程序(build 219)都失败了,并且如耶稣Flores和lauren alsina的帖子所述修改注册表并没有解决问题。

我的诀窍是添加注册表不在HKEY_LOCAL_MACHINE,但在HKEY_CURRENT_USER 更改PythonCore中的{{}} {{}} 1}}到3.5-32

有趣的是,使用3.5密钥,64位安装程序可以工作,但是当然你会遇到问题,因为安装的64位lib与32位python不兼容。这个安装程序中有些东西很破碎。

总而言之,我为Python 3.5 w32工作的.reg文件如下所示:

3.5-32

答案 1 :(得分:14)

来自pywin32 README

  

如果安装过程通知您未找到Python       注册表,它几乎肯定意味着你已经下载了错误的版本 -       无论是错误版本的Python,还是错误的“苦涩”。

你确定你的python和你的cpu架构有正确的版本吗?如果你这样做并且没有用,你可以尝试从源代码构建,我认为可能有一个命令行标志,允许你指定python安装位置。

答案 2 :(得分:8)

我遇到了同样的问题:

在64位Windows上,32位应用程序正在注册:

[1] HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Python

我认为安装程序希望在以下位置找到Python:

[2] HKEY_LOCAL_MACHINE \ SOFTWARE \ Python

使用regedit和本地管理员权限,您可以导出[1]的.reg文件,删除所有" Wow6432Node \"你找到,然后导入为[2]

答案 3 :(得分:3)

对于在Windows 10 64位上运行的最新Python36-32,我遇到了同样的问题。当安装所有用户模式时,上述所有解决方案都不适用于我。

上面的回答几乎可以通过将3.5替换为3.6,然后pywin32可以检测到注册表路径,但它仍然失败,错误代码为can't create pywin32-wininst.log. Try to run as administrator。它只是停止安装然后退出,即使已经以管理员身份运行它。

经过多次试验,它解决了如下:

  1. Obu's approach above,将3.5版本替换为3.6。

  2. 注册。

  3. 重命名python36-32的默认安装文件夹,如下所示:C:\Program Files (x86)\Python36-32C:\Program Files (x86)\Python36
  4. 以管理员身份运行pywin32安装程序。
  5. *道歉我不能在这里回复评论到期声誉限制,所以我创建这个答案是为了帮助那些遇到同样麻烦的人。

答案 4 :(得分:2)

我在使用Python 3.6的Windows 10 64位上遇到了同样的问题。它是为所有用户安装的(我猜它使用不同的注册表配置单元,以防它仅为当前用户安装)。

问题是 pywin32-220.win32-py3.6.exe 在注册表中搜索HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.6,而python 3.6安装程序创建HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.6-32

注意不同的结局!将3.6-32注册表导出到.reg文件,修改3.6的路径并重新导入文件注册表再次为我解决了问题。

答案 5 :(得分:0)

1)使用以下内容创建文本文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Help]

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Help\Main Python Documentation] @="C:\\Python34\\Doc\\python342.chm"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\InstallPath] @="C:\\Python34\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\InstallPath\InstallGroup] @="Python 3.4"

[HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.4\Modules]

[HKEY_LOCAL_MACHINE\SOFTWARE\PythonCore\3.4\PythonPath] @="C:\\Python34\\Lib;C:\\Python34\\DLLs"

2)用您安装python的路径替换C:\\ Python34部分。

3)将文件另存为* .reg

4)执行文件以与注册表结合。

刚刚测试它以安装pywin32并且It Works!

答案 6 :(得分:0)

我遇到了类似的情况,尝试安装 pywin32 ,但使用Winpython便携式安装。经过一番谷歌搜索后,我发现了.whlpip install pywin32‑221‑cp36‑cp36m‑win32.whl 箱中这个庞大的包裹库的链接。Christoph Gohlke

为我的python版本下载适当的wheel文件,在32bit的情况下为3.6.1,并通过 pip 安装:

{{1}}

答案 7 :(得分:0)

这适用于Python 3.5用户:

py -3.5 -m pip install pywin32

答案 8 :(得分:0)

我遇到了这个确切的问题,但是在我看来,我的处境有些不同,此外,我不想使用注册表黑客。因此,我开始发布一个新问题。这是我要写的:


我在Windows 7计算机上安装了Python 3.7的64位和32位版本。 64位版本安装在C:\ Python37中,而32位版本安装在C:\ Python37-32中。我在64位版本中安装了pywin32软件包,但在32位版本中没有安装。当我启动命令窗口时,切换到C:\ Python3y-32,然后运行“ pip install pywin32”,会提示它已经安装在C:\ Python37中。对,我知道。我希望将其安装在其他地方。我尝试下载轮文件并进行安装,结果相同。我尝试将C:\ Python37文件夹重命名为“ C:\ Python37 64位”,并将C:\ Python37-32重命名为C:\ Python37,但是pip给了我一个致命错误:

启动器中出现致命错误:无法使用以下命令创建进程 '“ c:\ python37-32 \ python.exe”
“ C:\ Python37 \ Scripts \ pip.exe”安装“ c:\ users \\ downloads \ pywin32-223-cp37-cp37m-win32.whl“'

(添加了换行符以提高可读性)


但是随后我再次查看该错误消息,并意识到加引号的字符串是命令。我复制了该字符串,在命令窗口中切换到C:\ Python37-32文件夹,粘贴了该字符串,删除了对C:\ Python37的引用,然后运行它。没问题。

答案 9 :(得分:0)

ManualInstall

获取所需的WHL文件并将其重命名为ZIP。

将该ZIP文件提取到目录中。

以下是一些用于安装的批处理代码:

set /p "S1=Manual Install - Wheel (ZIP) extract directory: "
set /p "S1=Python installation directory: "
RoboCopy %S1% "%S2%\Lib\site-packages"

将代码复制到BAT或CMD文件中。

以管理员身份运行脚本并接受输入。

答案 10 :(得分:-1)

pywin32 build 219有一个问题,就是在错误的注册表项中查找python 3.5 32位安装位置。在以后的pywin32版本中修复了这个问题 - 220和221是我试过的 - 他们正确地在注册表中找到python安装位置。您可以看到pywin32票证here

如果需要build 219,则可以临时重命名注册表项。

我在PC上为所有用户安装了python,因此我机器上的注册表项位于HKEY_LOCAL_MACHINE。如果您按用户安装python,则注册表项将位于HKEY_CURRENT_USER中。另外,我的COM对象是32位,所以我们使用32位python。

32位python注册表项位于:\SOFTWARE\Wow6432Node\Python\PythonCore

64位python注册表项位于: \SOFTWARE\Python\PythonCore

就我而言,我有两个需要暂时重命名的条目:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32

Python安装位置位于InstallPath键,我的机器位于:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32\InstallPath

我的\PythonCore\3.5文件夹只有\Help\Pythonwin Reference密钥,该密钥在\PythonCore\3.5-32文件夹中重复,因此我认为此密钥是从以前的某些安装中遗留下来的,不再相关。但是,我没有选择删除它,我暂时将其重命名如下:

自:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

要:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-temp

自:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5-32

要:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.5

完成pywin32 build 219安装后,我将密钥恢复为原始名称。

相关问题