유닛 테스트가 포함 된 Python 프로젝트의 설치 패키지를 만들려고합니다. 다음과 같이 내 프로젝트 레이아웃은 다음과 같습니다 setup.py 테스트를 실행할 때 하위 패키지에 ImportError가 발생했습니다.
setup.py
src/
disttest/
__init__.py
core.py
tests/
disttest/
__init__.py
testcore.py
내 setup.py
from distutils.core import setup
import setuptools
setup(name='disttest',
version='0.1',
package_dir={'': 'src'},
packages=setuptools.find_packages('src'),
test_suite='nose.collector',
tests_require=['Nose'],
)
파일 tests/disttest/testcore.py
라인 from disttest.core import DistTestCore
가 포함되어 있습니다.
setup.py test
을 실행하면 ImportError: No module named core
가됩니다.
setup.py install
이후에 python -c "from disttest.core import DistTestCore"
이 정상적으로 작동합니다. 그것은 import core
을 src/disttest/__init__.py
에 넣어도 작동하지만, 실제로는 유지하고 싶지 않고 테스트에만 필요합니다.
왜 그럴까요? 그리고 그것을 수정하는 올바른 방법은 무엇입니까?
나는'setup.py test' 전에'setup.py install'을 하는게 일반적인 관행인가요? [setuptools documentation] (http://peak.telecommunity.com/DevCenter/setuptools#test)이 그렇지 않은 것처럼 들리지만, 내 소스는 자동으로'sys.path'에 있어야합니다. 아마'nose.collector'는 내'package_dir'베이스 디렉토리를 알지 못했을까요? –
testcore.py에서 core를 어떻게 가져 오나요? sys.path/PYTHONPATH에 정확히 무엇이 있습니까? – Almad