使用build_ext编译Cython代码会返回错误,除非我在setup.py中完全指定目录

时间:2014-07-15 11:52:27

标签: python cython distutils anaconda

这里的第一个问题 - 感觉就像一个愚蠢的问题,我尝试搜索不同的东西,但找不到答案。

我正在关注Cython getting started guide并尝试构建我的第一个模块。我的'testing.pyx'文件是:

def say_hello_to(name):
    print("Hello %s!" % name)

我的'setup.py'文件是:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'Hello world app',
    ext_modules = cythonize("testing.pyx")
)

两个文件都位于同一目录C:\ testing中。然后我跑:

python setup.py build_ext --inplace

并收到以下错误(我正在使用Anaconda设置):

C:\Users\Jill3\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -IC:\Users\Jill3\Anaconda\include -IC:\Users\Jill3\Anaconda\PC -c testing.c -o build\temp.win-amd64-2.7\Release\testing.o
gcc.exe: error: testing.c: No such file or directory
gcc.exe: fatal error: no input files

一个testing.c文件出现在目录中,但没有其他内容。

如果我将setup.py文件更改为:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'Hello world app',
    ext_modules = cythonize("C:\\testing\\testing.pyx")

然后一切按预期工作。

我有什么要调整的吗?或者每次都必须包含整个目录路径?

编辑:我尝试在setup.py文件中包含当前目录:

from distutils.core import setup
from Cython.Build import cythonize
import os

setup(
    name = 'Hello world app',
    ext_modules = cythonize("testing.pyx"),
    include_dirs = [os.getcwd()]
)

这反映在输出中,但我仍然看到相同的错误:

C:\Users\Jill3\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -IC:\testing -IC:\Users\Jill3\Anaconda\include -IC:\Users\Jill3\Anaconda\PC -c testing.c -o build\temp.win-amd64-2.7\Release\testing.o
gcc.exe: error: testing.c: No such file or directory
gcc.exe: fatal error: no input files

1 个答案:

答案 0 :(得分:-2)

尝试从测试目录中运行python代码。问题可能在于路径。这在安装期间会发生,提示您在哪里安装设置。在您的情况下尝试解决此问题。