2010-11-20 5 views
1

으로 이동하면 Python 스크립트 가져 오기가 실패합니다. 이는 Python 가져 오기 및 검색 경로 작동 방식에 대한 저의 오해 일 수 있습니다. 또는 caldav 패키지 패키지에 문제가있을 수 있습니다.스크립트가 하위 디렉토리

import lxml 
import caldav 

이 디렉토리에서, 내가 입력 : 내가 MyProject를의 최상위 레벨에서 MyProject를

라는 VIRTUALENV 환경을 설정 한

, 나는이 개 수입을 포함하는 test.py 스크립트를 가지고 :

python test.py 

그것은

이제 아무 문제없이 잘 작동 스크립트를 하위 디렉토리 테스트로 옮기고 다음 명령을 실행하십시오.

python test/test.py 

가져 오기 lxml은 여전히 ​​작동하는 것 같습니다. 가져 오기 caldav가 다음 예외와 함께 실패합니다.

Traceback (most recent call last): 
    File "test/test.py", line 34, in <module> 
    main() 
    File "test/test.py", line 29, in main 
    exec ("import " + modulename) 
    File "<string>", line 1, in <module> 
    File "/home/ec2-user/caldav2sql/myproject/test/caldav/__init__.py", line 3, in <module> 
    from davclient import DAVClient 
    File "/home/ec2-user/caldav2sql/myproject/test/caldav/davclient.py", line 8, in <module> 
    from caldav.lib import error 
ImportError: No module named lib 

여기에 뭔가 잘못입니까? 나는 어떤 종류의 길을 설정해야합니까?

답변

3

대부분 caldavtest.py과 같은 디렉토리에 있었으므로 import 일 때 제대로 작동했습니다. test.py을 하위 디렉토리로 이동 했으므로 가져 오기에서 찾을 수 없습니다. caldav으로 이동하거나 PYTHONPATH을 설정할 수 있습니다. http://docs.python.org/tutorial/modules.html

sys.path 변수는 모듈에 대한 인터프리터의 검색 경로를 결정하는 문자열 목록은 다음과 같습니다

또한 파이썬의 모듈 튜토리얼에서 sys.path

정보를 수정할 수 있습니다. 환경 변수 PYTHONPATH에서 가져온 기본 경로 또는 PYTHONPATH가 설정되지 않은 경우 기본 제공 경로에서 초기화됩니다. 당신은 표준 목록 작업을 사용하여 수정할 수 있습니다

>>> import sys 
>>> sys.path.append('/ufs/guido/lib/python') 
+0

을 이것은 VIRTUALENV 환경이기 때문에, CalDAV를가 MyProject를/lib 디렉토리/사이트 패키지/CalDAV를 존재합니다. 이 위치에 PYTHONPATH를 설정하려고했지만 도움이되지 않습니다. –

+0

방금 ​​테스트 서브 디렉토리에 caldav가 설치되어 모든 것을 엉망으로 만든 것으로 나타났습니다. 내가 문제의 근본 원인을 찾는데 도움이 되었기 때문에 birryree의 대답을 받아 들였습니다. 감사! –

관련 문제