2012-03-23 64 views
1

我想開始使用cython並試圖編譯我的第一個程序。我已經創建了下面的代碼hello.pyx:編譯第一個cython程序時出錯

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 

我猜,我失去了一些東西很簡單,但我似乎無法弄清楚它是什麼。任何幫助,將不勝感激。

+0

我認爲你沒有在命令行給setup.py任何參數? – 2012-03-23 23:13:52

+1

根據cython文檔,你必須使用'build_ext'參數。如果這是你的問題,你應該接受@Henry Gomersall的回答。 – 2012-03-23 23:18:16

回答

4

運行python setup.py build_ext。這對我行得通。

+0

謝謝,我認爲我成功地運行了我的setup.py,但仍然存在問題。起初,當我運行setup.py build_ext時出現錯誤:錯誤:C:\ Documents and Settings \ student \ hello.pyx:沒有這樣的文件或目錄。在此之後,我將hello.pyx的副本放入學生,並再次運行。然後我運行build_ext; cythoning hello.pyx hello.c; 建立'你好'的擴展; 錯誤:無法找到vcvarsall.bat;我認爲我需要以某種方式鏈接我的C編譯器,並且我已經下載了MinGw,但我不確定我需要更改 – enderx1x 2012-03-24 02:28:06

+0

您需要將mingw添加到您的路徑中。實際上,我使用msys完成了我所有的Windows python開發工作:http://www.mingw.org/wiki/MSYS,它是mingw和其他有用的unix工具的補充外殼。它使得Windows體驗可以忍受!你*可能*需要在你的Windows路徑變量中添加一些Python路徑(我忘記了)。確保你改變你的外殼字體從邪惡的默認,但!設置完成後,使用easy_install等以及實際運行python應用程序是非常好的。 – 2012-03-24 08:28:45

+0

我沒有嘗試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。 – enderx1x 2012-03-24 14:36:23

0

我在這裏採取瘋狂的猜測......但我認爲這是你的目錄名稱中的空間。我只是花了幾分鐘的時間搜索Cython & Distutils,因爲我似乎記得建議您在Windows上使用它們時不要在目錄名稱中使用空格 - 但我無法找到我正在尋找的鏈接。

嘗試快速測試,只需將您的'cython程序'重命名爲'cythonprograms'並查看會發生什麼。

+0

嗯,我會認爲它應該不重要,因爲路徑用引號括起來......我想他只是沒有給腳本任何參數。 – 2012-03-23 23:19:44

+0

我一開始想的是同樣的事情,但它只是運行沒有參數的'python setup.py',你會得到標準的distutils幫助......但你沒有得到一個例外......並且他發佈了一個回溯 – user590028 2012-03-29 14:40:09