2012-05-25 2 views
2

이 주제에 대한 다른 게시물을 살펴 봤지만 라이브러리의 디렉토리로 직접 변경하거나 sys와 같은 절대 경로를 명시 적으로 지정하지 않고이 작업을 수행하는 방법이 있는지 궁금합니다. path.append 또는 Windows의 PATH 또는 CLASSPATH 환경 변수를 사용하십시오. 내가 지금하고있는 일은 "jvm.dll"을로드하는 것입니다.ctypes로드 라이브러리가 없습니다

+0

가능한 [Python | ctypes를 사용하여 dll에 액세스] (http://stackoverflow.com/questions/7586504/python-accessing-dll-using-ctypes) – Trilarion

답변

0

해당 DLL에 종속성이 없으면 ctypes 팩토리에 절대 경로를 전달하여 라이브러리를로드 할 수 있습니다. DLL (당신이 그러나 당신이 원하는 확인할 수 있습니다). 그러나 DLL은 함께 번들로 제공되며 상호 종속성이 있습니다. 가장 확실한 방법은 DLL을 포함하는 디렉토리를 os.environ['PATH']에 추가하여 OS 라이브러리 로더가 종속 DLL을 자동으로 해결할 수 있도록하는 것입니다. 환경 오염에 대해 걱정할 경우 일시적으로이 작업을 수행 할 수 있습니다.

dll_dir = r'c:\foo\bar\path' 
tmp = os.environ['PATH'] 
os.environ['PATH'] = dll_dir + ';' + tmp 
ctypes.LoadLibrary(dll_name) 
os.environ['PATH'] = tmp 
+1

이 또한 작동하지 않습니다. 실제로 dll을 보유하고있는 PATH에 대한 디렉토리 만 두는 것 (예 : os.environ [ 'PATH'] = r ' "C : \ Program Files (x86) \ Java \ jdk1.7.0_04 \ jre \ bin \ client " ') 작동하지 않습니다. 반면에 os.chdir ('C :/Program Files (x86) /Java/jdk1.7.0_04/jre/bin/client')가 작동합니다. – Cenoc

+0

경로를 완전히 바꾸지 않고 기존 경로의 맨 앞에 추가하려고 했습니까? 추가 PATH 항목이 필요할 수 있습니다. – Rakis

+0

나는 행운이 없었다. 나는 그것이 전혀 이상하지 않은 PATH를 전혀 사용하지 않을 수도 있다고 생각합니다. – Cenoc

관련 문제