2017-09-29 2 views
0

다음 폴더 계층 구조가 있습니다.다른 디렉토리에서 python 파일을 가져올 수 없습니다.

apriltag 
    python 
     apriltag.py 
my_notebook.ipynb 

나는 단순히 내 Jupyter Notebook으로 apriltag.py을 가져오고 싶습니다. 나는 이런 식으로 일을 시도 ..

import sys 
import os.path 

sys.path.append(os.path.dirname(os.path.realpath('__file__')) + "/apriltag/python") 

import apriltag 

을하지만, 내가 지금처럼 apriltag에서 클래스에 액세스하려고하면

AttributeError       Traceback (most recent call last) 
<ipython-input-74-d1254ec9a372> in <module>() 
    12 import apriltag 
    13 
---> 14 print(apriltag.Detector) 

AttributeError: module 'apriltag' has no attribute 'Detector' 

: 나는 다음과 같은 오류가

print(apriltag.Detector) 

을 모듈을 올바르게 가져 오지 않았 으면 제안하십시오. 나는 python 디렉토리의 루트에 __init__.py을 만들려고했으나 같은 결과가 발생했습니다.

+0

'from apriltag import Detector'가 작동합니까? –

+0

'dir (apriltag)'는 아마도 여러분에게 많이 말할 것입니다. –

+0

@TreytenCarey'이름을 가져올 수 없습니다. 'Detector' – Carpetfizz

답변

1

좋아, 조금 일찍 알려줄거야. 나는 당신의 문제에 대한 해결책을 가지고 있을지도 모른다. 그렇지 않으면 다시 알아낼 수 있습니다.

당신은 아마 본 것처럼

docs는 my_notebook.ipynb을 실행하고, 지금

The directory containing the script being run is placed at the beginning of the search path,

말, 그래서 디렉토리 검색 경로의 시작입니다입니다. 그리고 아마도 같은 레벨에있는 __init.py__ 파일을 apriltag 디렉토리에 가지고있을 것입니다. 따라서 모듈로 발견되어로드됩니다. 그리고 그 "모듈"에는 .py 파일이없고, 여러분의 __init.py__에는 아무것도 없으므로 빈 모듈로로드됩니다.

대신 sys.path 디렉토리를 수정하지 마십시오. __init.py__ 파일을 apriltag와 python 디렉토리에 모두 비워 두십시오.

그런 다음, 다음을 수행 할 수 있어야한다 :

from apriltag.python import apriltag 

당신이 필요로하는 것이어야한다 가져!하는 apriltag을.

일반적으로, 난 항상 init.py 빈 과 디렉토리 내 모든 코드를 설정 (그리고 dir(apriltag)가. 당신에게 훨씬 더 좋은 결과를 얻을 수)와 from 구문 모두를 호출합니다. 모듈을 다루기가 훨씬 쉬워졌습니다.

+1

못 박히 셨습니다 - 정말 감사합니다! – Carpetfizz