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>
이 성가신입니다!
나는 당신이 맞다고 생각했지만 for 루프를 통해 sys.path 목록을 검색 할 때 실수를 저질렀습니다. src/app 디렉토리는 경로에 있으므로 utils.newTasks 모듈을 선택해야합니다. 또한 위의 편집 내용에 유의하십시오 - 내 컴퓨터 사이의 유일한 차이점은 내가 virtualenv 아래에서 이것을 실행하고 있다는 것입니다. – user1561108
@ user1561108 : loader.py는 src/app/utils 디렉토리에 있으며 src/app 디렉토리에는 없습니다. utils.newTasks와 newTasks는 다른 이름입니다 (파이썬에서 다른 이름을 사용하여 같은 모듈을 가져올 수있는'__main__' 잡았다). 보통의 파이썬을 사용하면 명령 줄에서 newTasks를 성공적으로 가져올 수 있습니다. 비록 잡았다는 것을 피하기 위해 성을 대신 제공해야하지만. – jfs
내 업데이트를 참조하십시오. 모듈 이름을 정규화하면 모듈 이름을 찾을 수 있지만 속한 함수는 찾을 수 없습니다! – user1561108