파이썬 모듈 중 하나에서 main 메소드의 진입 점을 만들려고합니다. 해당 함수가있는 모듈을 가져 오는 데 문제가있는 것 같습니다.파이썬에서 load_entry_point 중에 모듈을 찾을 수 없습니다.
...
setup(name="awesome-tool",
...,
entry_points={
'console_scripts' : [
'awesome-tool = awesome_tool.awesome_tool:main'
]
}
)
이 프로젝트는 다음과 같이 구성되어 있습니다 :
내 setup.py은 다음과 같습니다
awesome_tool
|__ awesome_tool.py
|__ __init__.py
내가에서 사용할 수 있도록 할 주()라는 함수를 포함 awesome_tool.py
있어 실행 파일은 awesome-tool
입니다. setup.py를 실행하면 모든 것이 잘된 것처럼 보입니다. 나는 파이썬 프롬프트를 시작하고
> import awesome_tool.awesome_tool
> # (all good here)
을하지만 명령 줄에서 awesome-tool
를 호출 할 때,이 일이 무엇인가 할 수
Traceback (most recent call last):
File ".../virtualenvs/awesome-tool/bin/awesome-tool", line 9, in <module>
load_entry_point('awesome-tool==1.1.0', 'console_scripts', 'awesome-tool')()
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 378, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 2566, in load_entry_point
return ep.load()
File "build/bdist.macosx-10.9-intel/egg/pkg_resources.py", line 2260, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named awesome_tool.awesome_tool
무엇입니까? 방금 파이썬 셸에서 가져올 수 없었습니까? 파이썬 경로에서 재미있는 일이있을 것이라고 생각하지만 문제를 진단 할 수 없었습니다. 어떤 아이디어?
setup.py
에서 제공하는 awesome-tool
실행에 문제가있는 줄
from pkg_resources import load_entry_point
load_entry_point("awesome-tool==1.1.0", "console_scripts", "awesome-tool")()
, 나는 그것이 패키지와 모듈의 주 같은 이름 ("awesome_tool"모두가 매우 이상한 실현),하지만 이것은 내가 상속 한 코드이며, 이름 바꾸기와의 하위 호환을 중단하고 싶지는 않습니다.하지만 나중에 피할 수는 있습니다. 가능하면 이름을 지금과 같은 방식으로 유지하고 싶습니다.
가 어떻게 "명령 줄에서'최고-tool'를 호출"합니까? 그렇게 할 때 현재 작업 디렉토리는 무엇입니까? 파이썬을 실행할 때 작업 디렉토리는 무엇입니까? – abarnert
패키지 내용 (즉, awesome_tool/..')과 같은 위치에있는 파이썬 인터프리터 위의'awesome-tool' 디렉토리 하나를 호출하지만 다른 디렉토리로'cd' 할 때 파이썬 인터프리터를 다시 시도합니다 , 나는'ImportError'를 얻는다. 그게 진전이야! 고맙습니다. – llovett