我正在嘗試爲包含單元測試的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文檔](http://peak.telecommunity.com/DevCenter/setuptools#test)聽起來並非如此,我的源代碼應該自動放在'sys.path'中。也許'nose.collector'沒有意識到我的'package_dir'基目錄? – 2011-04-14 12:02:19
你如何在testcore.py中導入核心?什麼是你的sys.path/PYTHONPATH? – Almad 2011-04-16 21:12:48