2

.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!

4

3 に答える 3

4

Python スクリプトから実行すると、同じエラーが発生しました。

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

その間

python setup.py build_ext --inplace

コマンドプロンプトから作業しました。

その理由は、私のテストパッケージの名前が「cython」だったからです...愚かな私

于 2013-02-28T07:43:25.690 に答える
2

同じエラーが発生しました。いくつかのブログエントリに従って、コンパイル方法に関する情報を保持する cython.py ファイルをディレクトリに作成したことに気付くまで、丸一日作業しました。これを見つけた場所を思い出せませんが、このファイルを削除するとすべて正常に動作します

于 2013-02-21T12:05:36.663 に答える
0

これが役立つかどうかはわかりませんが、このエラーが発生したときにすべての.pycファイルを削除し、IDLE を介してスクリプトを再度実行し (IDLE で開いて F5 をクリックしました)、問題なく動作しました。

于 2012-11-21T22:47:44.307 に答える