2012-11-23 2 views
2
$ bin/python src/app/utils/loader.py newTasks checkForStuff 
Traceback (most recent call last): 
    File "bin/python", line 135, in <module> 
    execfile(__file__) 
    File "src/app/utils/loader.py", line 154, in <module> 
    module = __import__(args.module) 
ImportError: No module named newTasks 

:파이썬 ImportError를 다음 loader.py에서

if __name__ == '__main__': 
    parser = argparse.ArgumentParser(description='Runs python') 
    parser.add_argument('module', metavar='module', help="the target module") 
    args = parser.parse_args() 
    module = __import__(args.module) 

newTasks.py가 loader.py과 같은 디렉토리에 있습니다. 그것은 내 dev에 상자에서 작동, 준비에 svn 수출 않았다 그리고 위의 일이 일어났습니다. 어떤 포인터?

이번에는 virtualenv가 부족한만큼 중요한 차이점 만 해결할 수 있습니다.

편집

: 나는 명령 줄을 변경 :

$ bin/python src/app/utils/loader.py utils.newTasks checkForStuff 

및 모듈은 확인 발견되었다. 그러나 나의 다음 명령은 모듈의 기능 checkForStuff 중 하나를 호출하는 것입니다 :

parser.add_argument('func',metavar='function', help="the target function name") 
... 
func_param = getattr(module,args.func) 

을 지금은 기능을 찾을 수 없습니다? 나는 빈/파이썬에 가면

Traceback (most recent call last): 
    File "bin/python", line 135, in <module> 
    execfile(__file__) 
    File "src/app/utils/loader.py", line 156, in <module> 
    func_param = getattr(module,args.func) 
AttributeError: 'module' object has no attribute 'checkForStuff' 

는 :

>>> import utils.newTasks as nt 
>>> nt.checkForStuff 
<function checkForStuff at 0x29b2f50> 

이 성가신입니다!

답변

1

bin/python은 준비 기계의 파이썬 이진 파일이 아닙니다. 파이썬이 일반적인 것처럼 스크립트 디렉토리를 sys.path에 삽입하는지 확인하십시오.

+0

나는 당신이 맞다고 생각했지만 for 루프를 통해 sys.path 목록을 검색 할 때 실수를 저질렀습니다. src/app 디렉토리는 경로에 있으므로 utils.newTasks 모듈을 선택해야합니다. 또한 위의 편집 내용에 유의하십시오 - 내 컴퓨터 사이의 유일한 차이점은 내가 virtualenv 아래에서 이것을 실행하고 있다는 것입니다. – user1561108

+0

@ user1561108 : loader.py는 src/app/utils 디렉토리에 있으며 src/app 디렉토리에는 없습니다. utils.newTasks와 newTasks는 다른 이름입니다 (파이썬에서 다른 이름을 사용하여 같은 모듈을 가져올 수있는'__main__' 잡았다). 보통의 파이썬을 사용하면 명령 줄에서 newTasks를 성공적으로 가져올 수 있습니다. 비록 잡았다는 것을 피하기 위해 성을 대신 제공해야하지만. – jfs

+0

내 업데이트를 참조하십시오. 모듈 이름을 정규화하면 모듈 이름을 찾을 수 있지만 속한 함수는 찾을 수 없습니다! – user1561108