srcanamdw/codescanner/pyinstaller/support/rthooks/versioneddll.py
changeset 1 22878952f6e2
equal deleted inserted replaced
0:509e4801c378 1:22878952f6e2
       
     1 # Copyright (C) 2005, Giovanni Bajo
       
     2 # Based on previous work under copyright (c) 2002 McMillan Enterprises, Inc.
       
     3 #
       
     4 # This program is free software; you can redistribute it and/or
       
     5 # modify it under the terms of the GNU General Public License
       
     6 # as published by the Free Software Foundation; either version 2
       
     7 # of the License, or (at your option) any later version.
       
     8 #
       
     9 # In addition to the permissions in the GNU General Public License, the
       
    10 # authors give you unlimited permission to link or embed the compiled
       
    11 # version of this file into combinations with other programs, and to
       
    12 # distribute those combinations without any restriction coming from the
       
    13 # use of this file. (The General Public License restrictions do apply in
       
    14 # other respects; for example, they cover modification of the file, and
       
    15 # distribution when not linked into a combine executable.)
       
    16 #
       
    17 # This program is distributed in the hope that it will be useful,
       
    18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    20 # GNU General Public License for more details.
       
    21 #
       
    22 # You should have received a copy of the GNU General Public License
       
    23 # along with this program; if not, write to the Free Software
       
    24 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
       
    25 
       
    26 import os, sys, iu, imp
       
    27 class Win32ImportDirector(iu.ImportDirector):
       
    28     def __init__(self):
       
    29         self.path = sys.path[0] # since I run as a hook, sys.path probably hasn't been mucked with
       
    30         if hasattr(sys, 'version_info'):
       
    31             self.suffix = '%d%d'%(sys.version_info[0],sys.version_info[1])
       
    32         else:
       
    33             self.suffix = '%s%s' % (sys.version[0], sys.version[2])
       
    34     def getmod(self, nm):
       
    35         fnm = os.path.join(self.path, nm+self.suffix+'.dll')
       
    36         try:
       
    37             fp = open(fnm, 'rb')
       
    38         except:
       
    39             return None
       
    40         else:
       
    41             mod = imp.load_module(nm, fp, fnm, ('.dll', 'rb', imp.C_EXTENSION))
       
    42             mod.__file__ = fnm
       
    43             return mod
       
    44 sys.importManager.metapath.insert(1, Win32ImportDirector())