Python ctypes: loading DLL from from a relative path

You can use os.path.dirname(__file__) to get the directory where the Python source file is located.


I always add the directory where my DLL is to the path. That works:

os.environ['PATH'] = os.path.dirname(__file__) + ';' + os.environ['PATH']
windll.LoadLibrary('mydll.dll')

Note that if you use py2exe, this doesn't work (because __file__ isn't set). In that case, you need to rely on the sys.executable attribute (full instructions at http://www.py2exe.org/index.cgi/WhereAmI)


Expanding on Matthew's answer:

import os.path
dll_name = "MyCDLL.dll"
dllabspath = os.path.dirname(os.path.abspath(__file__)) + os.path.sep + dll_name
myDll = ctypes.CDLL(dllabspath)

This will only work from a script, not the console nor from py2exe.

Tags:

Python

Ctypes