2014-03-06 105 views
0

運行在一個項目nosetests我有一個項目的結構,如:如何使用用Cython

pgmpy/ 
|-- pgmpy 
| |-- BayesianModel 
| | |-- BayesianModel.py 
| | |-- __init__.py 
| |-- Exceptions 
| | |-- Exceptions.py 
| | |-- __init__.py 
| |-- Factor 
| | |-- CPD.py 
| | |-- _factor_product.c 
| | |-- _factor_product.pyx 
| | |-- Factor.py 
| | |-- __init__.py 
| |-- Independencies 
| | |-- Independencies.py 
| | |-- __init__.py 
| |-- __init__.py 
| |-- MarkovModel 
| | |-- __init__.py 
| | |-- MarkovModel.py 
| |-- readwrite 
| | |-- __init__.py 
| | |-- ProbModelXML.py 
| `-- tests 
|  |-- help_functions.py 
|  |-- test_BayesianModel.py 
|  `-- test_Independencies.py 
`-- setup.py 

的因子目錄包含.pyx文件。當我使用setup.py安裝pgmpy時,它使用Cython編譯並在python的dist-packages目錄中創建一個共享對象文件。但是由於這個共享目標文件在項目目錄中不可用,所以從該目錄運行nosetests會導致無法導入cython文件的錯誤。從任何其他目錄運行nosetests工作正常。

我該怎麼做才能確保nosetests從項目目錄運行?

回答

1

我看了一下你的項目,試着從distutils.core改變setup進口逼到setuptools,因爲distutils不提供有用的功能,如python setup.py develop - 這將代替打造.so文件到pgmpy/Factor/_factor_product.cpython-33m.so然後將可用進口。

+0

這是否意味着在setup.py中將'from distutils.core import setup'更改爲'import setuptools'?來自setuptools import setup'的' – emschorsch

+0

'。 – metatoaster