【问题标题】:Errors when compiling first cython program编译第一个 cython 程序时出错
【发布时间】:2012-03-23 20:35:18
【问题描述】:

我正在尝试开始使用 cython 并尝试编译我的第一个程序。我用以下代码创建了一个 hello.pyx:

def show():
    print ("Hello World")

以及带有以下代码的 setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension("hello", ["hello.pyx"])]

setup(
    name = 'Hello world app',
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)

两者都在我称为“cython 程序”的文件夹中,该文件夹位于 C:\Python32\cython 程序中。 Cython 位于 C:\Python32\Lib\site-packages\Cython。但是,当我运行 setup.py 时,出现以下错误:

Traceback (most recent call last):
  File "C:\Python32\cython programs\setup.py", line 10, in <module>
    ext_modules = ext_modules
  File "C:\Python32\lib\distutils\core.py", line 136, in setup
    raise SystemExit(gen_usage(dist.script_name) + "\nerror: %s" % msg)
SystemExit: usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: no commands supplied

我猜我错过了一些非常简单的东西,但我似乎无法弄清楚它是什么。任何帮助将不胜感激。

【问题讨论】:

  • 我认为您没有在命令行中为 setup.py 提供任何参数?
  • 根据 cython 文档,您必须使用 build_ext 参数。如果这是您的问题,您可能应该接受@Henry Gomersall 的回答。

标签: python compiler-errors cython


【解决方案1】:

运行python setup.py build_ext。这对我有用。

【讨论】:

  • 谢谢,我想我成功地运行了我的 setup.py,但还是有问题。起初,当我运行 setup.py build_ext 时出现错误:错误:C:\Documents and Settings\student\hello.pyx: No such file or directory。在此之后,我将 hello.pyx 复制到 student 中并再次运行它。然后我开始运行 build_ext;将 hello.pyx 转换为 hello.c;构建“你好”扩展;错误:无法找到 vcvarsall.bat;我认为我需要以某种方式链接我的 C 编译器并且我已经下载了 MinGw 但我不确定我需要更改什么
  • 您需要将 mingw 添加到您的路径中。我实际上使用 msys 进行了所有的 windows python 开发:mingw.org/wiki/MSYS,它是 mingw 和其他有用的 unix 工具的补充 shell。它使Windows体验可以忍受!您可能需要在 Windows 路径变量中添加一些 python 路径(我忘记了)。确保你从邪恶的默认值更改你的 shell 字体!设置好之后,就可以使用 easy_install 等,以及实际运行 python 应用程序了。
  • 我没有尝试过 msys,但我确实将 mingw 添加到了我的路径中。再次运行后出现以下错误: C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python32\include -IC:\Python32\PC -c hello.c -o构建\temp.win32-3.2\发布\hello.o; cc1.exe:错误:无法识别的命令行选项'-mno-cygwin';错误:命令“gcc”失败,退出状态为 1;。还有一种方法可以让我不必在学生中复制 hello.pyx。
  • 你的目录结构是什么?另外,您使用的是什么版本的 distutils?
  • 对于较新版本的 gcc,distutils 中似乎存在一个错误:bugs.python.org/issue12641。尝试编辑 c:\Python27\Lib\distutils\cygwinccompiler.py 中的 set_executables 定义以删除 -mno-cygwin。另外,我真的非常推荐安装和使用 msys。
【解决方案2】:

我在这里胡乱猜测...但我认为这是您目录名称中的空格。我刚刚花了几分钟谷歌搜索 Cython 和 Distutils,因为我似乎记得其中一个建议您在 Windows 上使用它们时不要在目录名称中使用空格 - 但我无法找到我正在寻找的链接。

尝试快速测试,只需将您的“cython 程序”重命名为“cythonprograms”,看看会发生什么。

【讨论】:

  • 嗯,我认为这应该没关系,因为路径用引号引起来......我认为他只是没有给脚本任何参数。
  • 一开始我也是这么想的,但是如果你只运行不带参数的“python setup.py”,你会得到标准的 distutils 帮助....但是你没有得到异常。 ..他发布了一个回溯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多