首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cython:‘AttributeError’对象没有'declare‘属性

Cython:‘AttributeError’对象没有'declare‘属性
EN

Stack Overflow用户
提问于 2012-11-15 01:02:32
回答 3查看 4.8K关注 0票数 1

编译.pyx文件工作正常,但当我键入以下内容时,突然出现错误:

代码语言:javascript
复制
python setup.py build_ext --inplace

我得到了错误:

代码语言:javascript
复制
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'

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

代码语言:javascript
复制
def say_hello_to(name):
    print "Hello %s!" %name

使用setup.py:

代码语言:javascript
复制
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++编译器,并通过运行以下命令准备环境:

代码语言:javascript
复制
C:\Program Files\Microsoft SDKs\Windows\v7.0>set DISTUTILS_USE_SDK=1
C:\Program Files\Microsoft SDKs\Windows\v7.0>setenv /x64 /release

你知道可能发生了什么吗?提前使用Tnx!

EN

回答 3

Stack Overflow用户

发布于 2013-02-28 15:43:26

从python脚本运行时,我得到了相同的错误:

代码语言:javascript
复制
os.system("python setup.py build_ext --inplace")

代码语言:javascript
复制
python setup.py build_ext --inplace

从命令提示符开始工作。

原因是我的测试包的名字是"cython"...愚蠢的我

票数 4
EN

Stack Overflow用户

发布于 2013-02-21 20:05:37

我也犯过同样的错误。我花了一整天的时间,直到我意识到我已经跟踪了一些博客条目,在我的目录中创建了一个cython.py文件,其中包含一些如何编译的信息。我不记得我是在哪里找到这个文件的,但是通过删除这个文件,一切工作正常。

票数 2
EN

Stack Overflow用户

发布于 2012-11-22 06:47:44

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13383567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档