2012-04-13 38 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  

ヘルプ?私はしかし、あなたは非常に簡単にはos.path使用してパスを操作することができ、窓に​​CDLLまたは一般にはctypesについて本当に多くのことは知らない

+1

はあなたが使用することができますが、 'os.path.expandvars' ? – mgilson

+0

私はosインポートパスから行った MY_DLL = os.path.expandvars(r '$(env_var)\ dir \ output \ $(プラットフォーム)\ $(Configuration)\ my.dll')しかし、 =とNameErrorの後に置くものを正確にロードします: 'os'は定義されていません。申し訳ありません、私はそれを右に入れましたか? – Thalia

+1

'from os import path'の代わりに' import os.path'を試してください。 '$(env_var)'を '$ {env_var} 'に変更する必要があるかもしれません - わかりません。名前の誤りはあなたがosをインポートしなかったからです、あなたはosからパスをインポートしました。 (あなたがやったやり方では、os.pathはあなたの名前空間ではただのパスとして知られています) – mgilson

答えて

1

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)) 
関連する問題