2012-06-23 3 views
0

내 파이썬 사이트 패키지에 vtk 모듈이 있고 자신의 파이썬 배포본이있는 응용 프로그램에서이 모듈에 액세스하려고한다고 가정 해 봅시다. 파이썬 모듈에서 "바로 가기"만들기

내가 좋아하는 것들을 몇 가지 시도 :

import sys 
sys.path.append("C:\Python27\Lib\site-packages") 
sys.path.append("C:\Python27\Lib\site-packages\vtk") 
import vtk 
lut = vtk.vtkLookupTable() 

를하지만 제대로 모듈을로드 할 수 없습니다 :

AttributeError: 'module' object has no attribute 'vtkLookupTable' 

나는 기본 파이썬 인터프리터에서 동일 할 경우 모두 괜찮습니다. 내가 import vtk을 할 때 희망 옳은 일을로드 할 수 있도록

는 지금은, 간단한 __init__.py 해결 경로로,이 응용 프로그램 사이트 패키지 vtk의 래퍼를 만들 생각했지만, 내가 만들려고 노력 파이썬 패키지와 경험이 없다 이 작품

간단히 말해서, 참조 패키지와 같은 이름의 폴더를 만들고 간단하게 __init__.py 파일을 만들어서 Python 사이트 패키지에서 임의의 폴더에서 모듈을 감쌀 수 있습니까?

답변

3

이 줄을 제거 :

sys.path.append("C:\Python27\Lib\site-packages") 
sys.path.append("C:\Python27\Lib\site-packages\vtk") 

site-packages 이미 파이썬 경로에있을 것입니다. 해당 파이썬 경로 (특히 첫 번째 수준) 내에 패키지/폴더를 추가하면 가져 오기가 엉망이됩니다. 이 vtk 패키지는 어떻게 구조화되어 있습니까? 이 경우

/path/to/site-packages/ 
         vtk/ 
          __init__.py 
          vtk.py 

은 VTK 내에서 기능에 액세스하려면 :

from vtk import vtk 
lut = vtk.vtkLookupTable() 

그것은 모든 폴더가 배치 방법에 온다. 또한이 작업을 수행 할 수 있습니다 :

import vtk 
lut = vtk.vtk.vtkLookupTable() 

파이썬 가져 오기가 작동하는 방법을 당신이 이해하지 않을 이유만으로 프록시 모듈을 작성하여 파이썬 가져 오기를 해킹하려고하지 마십시오. 오류는 분명했습니다. 속성 vtkLookupTable은 가져온 항목에 존재하지 않습니다. 잘못된 것을 가져 왔습니다. 고쳐.

sys.path을 수동으로 조작 할 필요는 거의 없습니다. 당신이해야 할 일이 있다면, 그것이 올바른 이유라는 것을 알아야합니다. 당신이 완전히 이해하지 못하는 것을 해결하지 않아야합니다.

파이썬으로 처음 시작했을 때 파이썬 경로에 문제가있었습니다. 실망 스러울 수는 있지만 작동 원리를 이해하게되면 필요합니다. 같은 무언가가 당신을 도울 수있는 다음

import vtk 
print dir(vtk) 
당신이 권리를 가져 오는 생각하는 곳이 같은 경우에 패키지 또는 모듈에 정확히 탐색 할 수 있도록, VTK의 속성을 출력합니다

맡은 일.

질문을 다시 읽은 후에, 이것은 여러분이 말하는 다른 python 설치처럼 보입니다. 대답은이 패키지를 다른 python 설치에 설치하거나 폴더를 응용 프로그램의 루트 수준에 복사하여 최상위 가져 오기로이 패키지를 포함시키는 것입니다.

+0

[vtk] (http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ) 구조는 매우 복잡하며 vtk 함수를 액세스 할 수있는 큰'__init __. py' 및 DLL이 있습니다. 그것은 단지 특별한 문제 일 뿐이며, 단순한'__init __. py'와 함께 임의의 폴더에서 패키지를 래핑하는 일반적인 해결책이 있기를 바랄 것입니다.하지만 그렇게 간단하지는 않습니다. 귀하의 의견을 주셔서 감사합니다. 다른 것들을 시도해 보겠습니다. – theta

+0

실제로 vtk의'__init __. py'는 그다지 크지 않지만 상위 폴더에서 일부 도우미 모듈을로드하고'vtk' 폴더도 추가하지 않으면 실패합니다 sys 경로. 어쨌든 나는 이전 접근법이 좋지 않다는 것을 알고있다. – theta

+0

@theta 여전히, 나는 print dir (vtk) 메서드를 사용하여 어디에서 가져 오기가 잘못되는지를 알 수있다. 다른'__init __. py' 파일에서 vtk 모듈을 프록시하려고 시도하면, 전혀 이식 할 수 없게 될 것이고, 실제로 많은 것을 얻을 수는 없을 것입니다. (나는 생각하지 않습니다. 당신이있는 곳에 대해 좋은 생각을 가지고 있습니다. 그리고 초기 답변에서 많은 가정을했습니다. 정말 유감 스럽습니다.) 전통적인 방식으로 제대로 가져 오기 작업을 시도해보십시오. 그러면 정말 필요한 경우'__init__'에서 가져 오기를 살펴볼 수 있습니다. –

0

"C:\Python27\Lib\site-packages"은 이미 파이썬 경로에 있습니다.따라서 경로를 추가하는 것은 불필요합니다. 제거 :

import sys 
sys.path.append("C:\Python27\Lib\site-packages") 
sys.path.append("C:\Python27\Lib\site-packages\vtk") 

다음 "C:\Python27\Lib\site-packages\vtk"에서 __init__.py라는 새 파이썬 파일을 만들고이 디렉토리에 자신의 모듈 vtk.py을 넣어 "C:\Python27\Lib\site-packages"에서 'vtk\'라는 새 폴더를 만듭니다. 사용 :

import vtk 

또는

from vtk import vtk 

은 자신의 모듈을 사용할 수 있습니다.

관련 문제