我有一個混合的Python/C++庫,其中測試文件混合在相同目錄中的源文件中。佈局看起來像強制py.test使用已安裝版本的模塊
/home/irving/geode
geode
__init__.py
vector
__init__.py
test_vector.py
...
...
不幸的是,由於缺少.so擴展模塊,因此該庫不可用。 問題:我可以使py.test始終使用已安裝的版本,即使從/home/irving/geode
或子目錄運行?
測試文件有from __future__ import absolute_import
,如果直接作爲腳本執行,則運行正常。例如,如果我這樣做
cd geode/vector
./test_vector.py
這確實import geode
,發現已安裝的版本。但是,如果我運行geode/vector
中的py.test,它會找到本地副本geode
,然後死亡。
事實上,沒有一個'__init __。py',setuptools的找不到test目錄作爲一個包,如果你正在使用''find_packages在我的經驗()。因此,'tests'目錄不會在你的'site-packages'上傳遞。我選擇包含'__init __。py',它可以與'py.test --pyargs mypackage'完美協作。 – kirpit