2011-07-02 2 views
1

코드를 여러 파일로 분할했습니다. 다른 모든 파일의 모든 기능을 admin.py로 가져 왔습니다. 함수 XYZ를 호출하고 싶습니다. admin/XYZ로 기능 경로를 지정하면 잘못된 기능으로 오류가 발생하며이 경우 경로를 file_with_XYZ_function/XYZ으로 지정해야합니다.web2py에서 가져 오기를 사용하여 함수 호출

하나 개의 파일에서

+0

파일 이름으로 XYZ가 있습니까? –

+0

어떤 코드입니까? 당신의 코드? admin.py 자신의 함수 또는 gluon/admin.py 코어 파일을 변경 했습니까? yourapp/modules 아래에서 admin/XYZ 파일은 어디에 있습니까? 죄송 합니다만 더 많은 정보가 필요합니다. web2py 메일 링리스트에서 질문하면 더 나은 지원을받을 수 있습니다. – Massimo

+0

혼란을 드려 죄송합니다. 질문 자체를 편집했습니다. admin.py는 (컨트롤러에서) 내 자신의 파일이고 그 파일에서 XYZ 함수를 가져 왔습니다. admin.py에 정의 된 함수를 호출 할 때와 같은 방법으로 함수를 호출 할 수 없습니다. –

답변

2

참고 가져온 모든 기능을이 문제와 간단한 전화를 극복 할 수있는 방법이 있나요 : 나는 당신의 질문을 이해 모르겠어요으로 이것은 당신의 질문에 대답하지 않을 수도 있습니다 ...

그러나 당신은 (공유) 모듈에 일부 코드를 넣어 원하는 난 당신이 web2py book의 4 장 (코어)에서 모양과 local_import를 검색하는 것이 좋습니다 당신의 컨트롤러의 여러에서 포함합니다. 응용 프로그램의 "모듈"폴더에 배치하여 : 이런 종류의 상황에 대한

는 web2py 글로벌 sys.path에 이 변경되지되는 방식으로 모듈을 를 가져올 수있는 다른 방법을 제공합니다. 한 가지 이점은 모듈 이 자동으로 복사되고 응용 프로그램과 함께 배포 됨 ( )입니다. 그러나 에는 특정 제한 사항이 적용됩니다. web2py 은 모듈을 "modules"폴더에서 가져 오기 위해 사용해야하는 local_import 함수를 제공합니다.

모듈 가져 오기는 모듈 및 web2py가 모듈을 찾을 수있는 위치에 따라 다릅니다. web2py가 sys.path 또는 web2py/site-packages에서 찾을 수있는 표준 모듈 인 경우 import modulename은 예상대로 작동해야합니다. applications/appname/modules

그 모듈이 local_import를 사용하여 가져올 수 있습니다 : 앱 web2py 로컬 모듈의 경우

다른 것을 제공합니다.

mymodule = local_import(themodule)

이것은 애플 리케이션 지역의 모듈 폴더의 이름 themodule으로 모듈을 수입하고 이름 인 MyModule에서 그것을 사용할 수 있습니다. local_import는 reload와 app이라는 두 개의 추가 인수를 지원합니다. 개발 모듈 코드는 종종 변경되므로 web2py에 각 요청시 매개 변수 reload=True을 사용하여 모듈을 다시로드하는 것을 잊지 마십시오. 그렇지 않으면 web2py를 다시 시작하지 않으면 변경 사항이 표시되지 않습니다.

+1

web2py 1.96.1부터 local_import는 더 이상 사용되지 않습니다. 이제 표준 Python import 문을 사용하여/app/modules 폴더에서 모듈을 가져올 수 있습니다. 예를 들어 /app/modules/mymodule.py의 경우 'import mymodule'을 수행하면됩니다. – Anthony

0

당신은 모듈 폴더에 파이썬 파일을 만들 수 있으며 컨트롤러에서 파이썬 라이브러리를 가져 오는 것과 같이 가져올 수 있습니다. 하지만 그 파일에 대한 경로를 부여해야합니다.

 from applications.myApp.modules.myModule import *

이것은 내 랩퍼에 대한 나의 해결책입니다. 이제 함수 이름을 호출하여 함수를 사용할 수 있습니다.

myFunction
+0

답장을 보내 주셔서 감사합니다. 내가 파일 내의 어딘가에서 그 함수를 호출해야한다면 당신이 말하는 것은 사실입니다. 만약 내가 그들을 가져온 파일에서 직접 동일한 기능을 사용하고 싶습니다, 그것은 같은 기능을 찾을 수 없습니다 (자세한 내용은 내 질문을 참조 할 수 있습니다.) –

+0

당신은 파일에서 네이티브 함수와 같은 함수를 호출 할 수 없기 때문에 임포트하는 함수는 런타임에 임포트되므로 서버는 존재하지 않으므로 서버가 해당 함수에 요청을 보낼 수 없습니다. 마지막으로 가져온 함수를 호출하는 더미 함수를 내부에 배치 할 수 있습니다. 모든 일이 일어났습니다. – kommradHomer

+0

우리가 URL 재 작성을 사용하는 곳입니다 :) –

관련 문제