簡體   English   中英

如何在python中搜索並獲取DLL文件的目錄

[英]How can I search and get the directory of a DLL file in python

假設我有一個名為banana.dlldll文件,並且有一個名為banana.py的模塊,該模塊將使用ctypes加載banana.dll ,並且它們存儲在同一目錄中,例如c:\\Python27\\lib視窗。

現在,我在其他目錄(例如c:\\user\\desktop )中創建一個名為testing.py的新python文件,該文件將導入banana.py模塊。 但是由於當前的工作目錄是testing.py的存儲目錄。 因此,我需要通過硬編碼將目錄手動更改為c:\\Python27\\lib

但是,有沒有一種更聰明的方法可以搜索banana.dll的存儲路徑?

如果您安裝了pywin32:

import _win32sysloader
mod = 'banana'
path_to_mod = _win32sysloader.GetModuleFilename(mod) or _win32sysloader.LoadModule(mod)

要么

import win32api
mod = 'banana'
path_to_mod = win32api.GetModuleFileName(win32api.LoadLibrary(mod))

如果沒有pywin32,則可以使用ctypes訪問win32 api:

import ctypes
from ctypes.wintypes import HANDLE, LPWSTR, DWORD

GetModuleFileName = ctypes.windll.kernel32.GetModuleFileNameW
GetModuleFileName.argtypes = HANDLE, LPWSTR, DWORD
GetModuleFileName.restype = DWORD

mod = 'banana'
MAX_PATH = 260
dll = ctypes.CDLL(mod) or ctypes.WINDLL(mod)
buf = ctypes.create_unicode_buffer(MAX_PATH)
GetModuleFileName(dll._handle, buf, MAX_PATH)
path_to_mod = buf.value

不要忘記處理WindowsError和其他可能的異常。

嘗試:

import banana
import os.path

module_dirname = os.path.dirname(banana.__file__)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM