2016-04-19 5 views
8

मैं साइथन में एक पैकेज बना रहा हूं। मैं setup.py के लिए संरचना के रूप में निम्नलिखित का उपयोग कर रहा:साइथन संकलन त्रुटि: गतिशील मॉड्यूल मॉड्यूल निर्यात फ़ंक्शन को परिभाषित नहीं करता

from distutils.core import setup 
from distutils.extension import Extension 
from Cython.Build import cythonize 
import numpy 
import scipy 

extensions = [ 
    Extension("xxxxx",["xxxx/xxxxx.pyx"], 
    include_dirs=[numpy.get_include(),"."]), 
    Extension("nnls",["xxxxx/xxxxx.pyx"], 
       include_dirs=[numpy.get_include(),"."]), 
] 

setup(
    name='xxxxxx', 
    version='0.0.0', 
    description='''********''', 
    url='xxxxxxx', 
    author='xxxxx', 
    author_email='xxxxx', 
    packages=[ 
     'xxxxx', 
    ], 
    install_requires=[ 
     'cython', 
     'numpy', 
     'scipy', 
    ], 
    ext_modules=cythonize(extensions), 
) 

हालांकि, मैं अजगर 3. यह में स्थापना पर एक त्रुटि हो रही है अजगर 2 तथापि में काम कर रहा है, यह अजगर 3 में संकलन नहीं कर रहा है निम्न त्रुटि होने :

dynamic module does not define module export function

मैं इस समस्या को कैसे हल कर सकता हूं? setup.py की संरचना क्या संकलन नहीं कर रही है?

उत्तर

4

आपको पायथन 3 (python3 setup.py build_ext, शायद --inplace) के साथ setup.py को कॉल करने की आवश्यकता है। ऐसा इसलिए है क्योंकि पाइथन 3 init फ़ंक्शन के लिए एक अलग नाम परिभाषित करता है जिसे मॉड्यूल शुरू होता है, और इसलिए आपको सही नाम उत्पन्न होने के लिए पायथन 3 का उपयोग करके इसे बनाना होगा।

थोड़ा और अधिक विस्तार के लिए Cython Compilation Error: dynamic module does not define module export function और How to specify Python 3 source in Cython's setup.py? देखें (यह इन सवालों का डुप्लिकेट की सीमा पर है, लेकिन मेरे विचार में काफी नहीं है)

संबंधित मुद्दे

 संबंधित मुद्दे