错误:'ext_modules'选项的每个元素必须是Extension实例或2元组

时间:2014-02-06 05:41:15

标签: python setuptools

我试图在python中使用setuptools来创建一个egg包,但是我得到了这个奇怪的错误:

error: each element of 'ext_modules' option must be an Extension instance or 2-tuple

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:13)

假设您已经安装了setuptools, 编辑egg包目标的setup.py 并替换import setup, Extension以便从setuptools获取它们。

from setuptools import setup, Extension, Command

Rational:setuptools重新定义Extension,因此它可能无法将 ext_modules 参数中的对象识别为有效的Extension对象。因此错误信息。

ext_modules 是setup()方法的一个参数,用于描述模块的扩展名,它在setup.py中指定。

setup(name='foo',
  version='1.0',
  ext_modules=[Extension('foo', ['foo.c'])],
  ) 

More info available in Python documentation

答案 1 :(得分:3)

我不得不重新排序导入语句才能摆脱此错误。这段代码会产生错误:

from Cython.Build import cythonize
from setuptools import find_packages, setup

此代码不会产生错误:

from setuptools import find_packages, setup
from Cython.Build import cythonize

答案 2 :(得分:0)

这是因为与使用扩展程序导入的distutils发生冲突而导致w.r.t setuptools。我在安装gdsCAD时看到这个错误,所以我不得不更新setupext.py来成功安装