After installing 64 bit Windows 7 at work, I got a problem of installing many python utilities that search for installed python locations is windows registry. distutils (setuptools-0.6c11.win32-py2.6.exe) still could not find 64 bit python installation, as well as develer's Unofficial MinGW GCC binaries for Windows (I still do not have a solution for that one :( ).
Actually, what helped me with disttools, was a http://www.mail-archive.com/distutils-sig@python.org/msg10512.html group thread. The currently available 64 bit python installation is registering python in a new location in windows registry. So one have to use a modified script for registering python the old way:
#
# script to register Python 2.0 or later for use with win32all
# and other 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()
or just inject the following REG file into your registry if you are using python 2.6 installed in
C:\Python26 directoryWindows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Python] [HKEY_CURRENT_USER\Software\Python\Pythoncore] [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6] [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\InstallPath] @="C:\\Python26" [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\PythonPath] @="C:\\Python26;C:\\Python26\\Lib\\;C:\\Python26\\DLLs\\"
14 comments:
was having some problems installing psycopg for postgres/postgis. used the registry contents that you posted above and it appears this saved me from having to reinstall python as 32-bit on my 64-bit windows 7 machine. thanks for the post!
yep, thanks :)
It worked for me too (installing PIL). Thank you so much.
Added those lines to a txt file then changed to a .reg file and merged to the registry and it worked for me too!
The problem is the pywin32 is a 32 bit installer, it will look for the Python reg entries in the Wow6432Node, the following .reg file will add the entries, ensure the paths are correct for your install.
Tested with Windows 7 x64 and python 3.2.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\Help]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\Help\Main Python Documentation]
@="C:\\Python32\\Doc\\python32.chm"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\InstallPath]
@="C:\\Python32\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\InstallPath\InstallGroup]
@="Python 3.2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\Modules]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\3.2\PythonPath]
@="C:\\Python32\\Lib;C:\\Python32\\DLLs"
thanks a lot! it worked
(had a problem with pysqlite for python27)
Thank you, worked like a charm, installed pywin32
Thanks a lot. =D
I used RegEdt32 and went into the HKEY_LOCAL_MACHINE hive, selected the python key, and used the export command to create a file I called pyreg.reg. This made a file similar to the one shown in the comment. I then replaced all references to HKEY_LOCAL_MACHINE with HKEY_CURRENT_USER (in NotePad), and saved the result as pyreg1.reg. I then executed on the cmd line:
regedt32 pyreg1.reg
(The effect of doing this is to capture the exact version of Python you have installed, including any changes to the registry layout it has).
Thank you! that worked for me!
Thank you very much! (Problem with Mabot installation has been fixed.)
Used the .reg method, worked like a charm for Python27.
Thanks a lot!
thx man i got so many solution , but just your are perfect
thx a lot
Post a Comment