Cython AttributeError: 'module' object has no attribute 'declare' Cython属性错误:'module'对象没有'declare'属性

4

编译.pyx文件一直很顺利,但突然在我输入以下命令时开始出错:

python setup.py build_ext --inplace

我遇到了错误:

c:\Python27\cython\helloworld>python setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
Traceback (most recent call last):
  File "setup.py", line 8, in <module>
    ext_modules = [Extension("hello", ["hello.pyx"])]
  File "C:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 163,
in run
    _build_ext.build_ext.run(self)
  File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run
    self.build_extensions()
  File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 170,
in build_extensions
    ext.sources = self.cython_sources(ext.sources, ext)
  File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 317,
in cython_sources
    full_module_name=module_name)
  File "C:\Python27\lib\site-packages\Cython\Compiler\Main.py", line 605, in com
pile
    return compile_single(source, options, full_module_name)
  File "C:\Python27\lib\site-packages\Cython\Compiler\Main.py", line 546, in com
pile_single
    return run_pipeline(source, options, full_module_name)
  File "C:\Python27\lib\site-packages\Cython\Compiler\Main.py", line 386, in run
_pipeline
    import Pipeline
  File "C:\Python27\lib\site-packages\Cython\Compiler\Pipeline.py", line 7, in <
module>
    from Visitor import CythonTransform
  File "Visitor.py", line 9, in init Cython.Compiler.Visitor (Cython\Compiler\Vi
sitor.c:12838)
  File "C:\Python27\lib\site-packages\Cython\Compiler\Nodes.py", line 6, in <mod
ule>
    cython.declare(sys=object, os=object, copy=object,
AttributeError: 'module' object has no attribute 'declare'

我尝试在一个简单的.helloworld.pyx文件上运行它:

def say_hello_to(name):
    print "Hello %s!" %name

使用setup.py文件:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
  name = 'Hello world app',
  cmdclass = {'build_ext': build_ext},
  ext_modules = [Extension("hello", ["hello.pyx"])]
)

它已经成功运行了几次,但是由于某些变化,我在搜索问题时无法找到任何信息。我使用的是Python 2.7 64位版本,最新的Cython版本,为了编译文件,我使用Windows SDK C/C++编译器,并通过运行以下命令来准备环境:

C:\Program Files\Microsoft SDKs\Windows\v7.0>set DISTUTILS_USE_SDK=1
C:\Program Files\Microsoft SDKs\Windows\v7.0>setenv /x64 /release

有什么想法会发生了什么?提前感谢!

了解导入的作用可能会很有用:https://dev59.com/u2cs5IYBdhLWcg3wJglV - NullUserException
谢谢,我会进行研究并看看能否找到相关内容! - Willian Fuks
4个回答

7

当我从Python脚本运行时,遇到了相同的错误:

os.system("python setup.py build_ext --inplace")

python setup.py build_ext --inplace

从命令提示符中工作。

原因是我的测试包名称为“cython”...我真是太蠢了。


2

我曾遇到过同样的错误。花了一整天时间来研究,最终发现我按照某个博客条目创建了一个名为cython.py的文件,并在其中放置了一些编译信息。我不记得这个博客是哪里找到的,但是当我删除这个文件后,一切都正常了。


0

我不确定这是否有帮助,但当我遇到这个错误时,我删除了所有的.pyc文件,然后通过IDLE再次运行脚本(在IDLE中打开并点击F5),然后它就正常工作了。


0

这是一篇旧帖子,但仍然是搜索结果中排名靠前的帖子之一,所以......对于任何偶然发现它的人- 只需执行 pip uninstall Cython && pip install Cython 就可以了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接