문제

내가 개발하는 파이썬 시스템에서는 일반적 으로이 모듈 구조가 있습니다.

mymodule/
mymodule/mymodule/feature.py
mymodule/test/feature.py

이를 통해 작은 테스트 프레임 워크는 테스트/기능을 쉽게 가져올 수 있으며 단위 테스트를 실행할 수 있습니다. 그러나 이제 일부 쉘 스크립트 (파이썬으로 작성된)가 필요합니다.

mymodule/
mymodule/scripts/yetanotherfeature.py
mymodule/test/yetanotherfeature.py

antanotherfeature.py는 모듈 데비안 패키지에 의해 /usr /bin에 설치됩니다. 그러나 우리는 분명히 .py 확장을 원하지 않습니다. 따라서 테스트 프레임 워크가 여전히 모듈을 가져올 수 있으려면이 상징적 링크를 수행해야합니다.

mymodule/
mymodule/scripts/yetanotherfeature
mymodule/scripts/yetanotherfeature.py @ -> mymodule/scripts/yetanotherfeature
mymodule/test/yetanotherfeature.py

파이썬에서 파일 이름으로 모듈을 가져올 수 있습니까? 아니면 더 우아한 솔루션을 생각할 수 있습니까?

도움이 되었습니까?

해결책

가져 오기를 사용하여 속임수를 사용할 수 있습니다. 후크, 나는 그것을 추천하지 않을 것입니다. 반면에 나는 아마도 다른 방법으로 그것을 할 것입니다. 따라서 라이브러리가 어디에나있을 수 있으며 (PY 확장이 있으므로) 정상을 가져 와서 내부에서 테스트를 실행할 수 있습니다. 그런 다음/usr/bin/etanotherfeature 포인트를 가리키므로 PY없이 실행할 수 있습니다.

편집 : 이것 (적어도 후크 부품)을 신경 쓰지 말고, Import Imp 솔루션은 나에게 아주 좋아 보인다 :)

다른 팁

그만큼 IMP 모듈 이것에 사용됩니다 :

daniel@purplehaze:/tmp/test$ cat mymodule
print "woho!"
daniel@purplehaze:/tmp/test$ cat test.py 
import imp
imp.load_source("apanapansson", "mymodule")
daniel@purplehaze:/tmp/test$ python test.py
woho!
daniel@purplehaze:/tmp/test$ 

IMP 모듈 확인 :

http://docs.python.org/library/imp.html

이렇게하면 파일 이름으로 모듈을로드 할 수 있습니다. 그러나 나는 당신의 상징적 링크가 더 우아한 솔루션이라고 생각합니다.

또 다른 옵션은 setuptools를 사용하는 것입니다.

"... Windows와 Posix 플랫폼 모두에서 스크립트의 파일 이름 일치 로컬 컨벤션을 갖는 쉬운 방법은 없습니다. 다른 경우, 실제"메인 "이 A 인 경우"기본 "스크립트에 대해 별도의 파일을 만들어야합니다. 어딘가에 모듈에서 작동합니다 ... SetUptools는 올바른 확장자로 스크립트를 자동으로 생성하여 이러한 모든 문제를 해결하고 Windows에서 .Exe 파일을 생성합니다 ... "

https://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top