2014-03-06 60 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