gen_py target directory for makepy

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Alan Meyer

    gen_py target directory for makepy

    I had an unusual problem tonight running makepy to install some
    Microsoft COM interfaces in a Python 2.5 Windows XP installation
    created using the ActiveState installer.

    In earlier versions of Python, the files were generated to:

    \PythonXX\Lib\s ite-packages\win32c om\gen_py

    But in my 2.5 installation they were generated to my temp
    directory, in my case this was:

    c:\temp\gen_py\ 2.5

    I hadn't paid attention to the messages and when I cleared my
    temp directory, which I occasionally do, the COM interfaces
    stopped working.

    Tracing through the makepy code, I found the following
    (reformatted for email) in

    \Python25\Lib\s ite-packages\win32c om\__init__.py

    if not __gen_path__:
    try:
    import win32com.gen_py
    __gen_path__ = sys.modules["win32com.gen_p y"].__path__[0]
    except ImportError:
    # If a win32com\gen_py directory already exists, then we use it
    # (gencache doesn't insist it have an __init__, but our
    # __import__ above does!
    __gen_path__ = \
    os.path.abspath (os.path.join(_ _path__[0], "gen_py"))
    if not os.path.isdir(_ _gen_path__):
    # We used to dynamically create a directory under win32com -
    # but this sucks. If the dir doesn't already exist, we we
    # create a version specific directory under the user temp
    # directory.
    __gen_path__ = os.path.join(
    win32api.GetTem pPath(), "gen_py",
    "%d.%d" % (sys.version_in fo[0],
    sys.version_inf o[1]))

    I was able to make everything work right by creating the gen_py
    directory in the expected place and re-running makepy. But I'm
    curious to know:

    1. Why does it suck to create gen_py dynamically?

    2. Why didn't I have a gen_py directory already? Did I somehow
    destory it or is it not created by default?

    3. Why is the temp directory the alternate choice for where to
    put these?

    Thanks.

    Alan
Working...