编译.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'
我尝试在一个简单的.pyx文件helloworld上运行它:
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"])]
)
它已经有好几次了,有些东西已经改变但是当我用Google搜索并搜索这个问题时,我找不到任何信息。我正在使用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
关于可能发生的事情的任何想法? Tnx提前!
答案 0 :(得分:2)
我遇到了同样的错误。 工作了一整天,直到我意识到我已经按照一些博客条目在我的目录中创建一个cython.py文件,其中包含一些如何编译的信息。 我不记得我在哪里找到这个但是删除这个文件一切正常
答案 1 :(得分:1)
从python脚本运行时出现了同样的错误:
os.system("python setup.py build_ext --inplace")
而
python setup.py build_ext --inplace
从命令promt工作。
原因是我的测试包的名称是“cython”...愚蠢的我
答案 2 :(得分:0)
我不确定这会有什么帮助,但是当我收到此错误时,我删除了所有.pyc
文件并通过IDLE再次运行脚本(在IDLE中打开并单击F5)然后它运行正常。