2012-04-13 51 views
0

我想在python中加載dll,並且只能這樣做,如果我輸入絕對路徑。我想使用相對路徑或環境變量。唯一可行的是,如果我指定了確切的路徑(C:...),我甚至試圖讓dll直接在py文件所在的文件夾中構建,但它仍然無法工作。
我有什麼:python:無法指定dll導入的相對路徑

MY_DLL = r'c:\full_path\output\Win32\Debug\my.dll' 
#MY_DLL = r'my.dll' #this doesn't work but it is what I want 
#MY_DLL = r'$(env_var)\dir\output\$(Platform)\$(Configuration)\my.dll' #this doesn't work either but would be good too  

幫助?

+1

你可以使用'os.path.expandvars' ? – mgilson 2012-04-13 19:57:37

+0

我做了從os導入路徑 MY_DLL = os.path.expandvars(r'$(env_var)\ dir \ output \ $(Platform)\ $(Configuration)\ my.dll')但它表明它試圖加載後,我把=然後NameError:'os'沒有定義。對不起,沒有頭緒..我把它放在正確的位置? – Thalia 2012-04-13 20:07:09

+1

嘗試'導入os.path'而不是'從os導入路徑'。您可能還需要將'$(env_var)'更改爲'$ {env_var}' - 我不確定。名稱錯誤是因爲你沒有導入os,所以你從os導入了路徑。 (就像你做的那樣,os.path在你的命名空間中就像路徑一樣) – mgilson 2012-04-13 20:09:01

回答

1

我不知道cdll在Windows或真多對一般ctypes的,但是,你可以很容易地使用os.path中操縱路徑:

import os.path 
p1="path.dll" 
print (os.path.abspath(p1)) 
p2="${env_var}/path.dll" #Make sure you set env_var in the calling environment...Otherwise it won't be expanded... 
print (os.path.expandvars(p2))