我正在尝试从 Cython 教程构建Hello World 示例。我已经编写了 hello.pyx 和 setup.py 文件:
# hello.pyx
def say_hello_to(name):
print("Hello %s!" % name)
Run Code Online (Sandbox Code Playgroud)
# setup.py
try:
from setuptools import setup
from setuptools import Extension
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
setup(
name='Hello world app',
ext_modules=cythonize("hello.pyx"),
)
Run Code Online (Sandbox Code Playgroud)
当我跑
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
copying build\lib.win-amd64-2.7\cython_test\hello.pyd -> cython_test
error: [Errno 2] No such file or directory: 'cython_test\\hello.pyd'
Run Code Online (Sandbox Code Playgroud)
构建过程工作正常,我得到了一个工作hello.pyd文件,但由于某种原因 setup.py 无法将其复制.pyd回工作目录。我该如何解决?
hello.pyx 和 setup.py 文件也可以在BitBucket 上找到
Jos*_*r98 11
希望这对遇到此错误的其他人有用。经过一番挖掘,我的问题是由于__init__.py同一目录中的文件造成的。这个 github 问题突出了潜在的问题。删除后__init__.py,我现在.pyd在目录中获得了正确的文件。
我已经解决了这个问题。看来python setup.py命令应该在项目目录之外执行。以下代码工作正常。
cd ..
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
更新:解决问题的更好方法是指定功能package_dir选项setup:
setup(
name='Hello world app',
package_dir={'cython_test': ''},
ext_modules=cythonize("hello.pyx"),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |