我正在尝试从Cython教程构建Hello World示例。我给两人都写了问候。Pyx和setup.py文件:
# hello.pyx
def say_hello_to(name):
print("Hello %s!" % name)
# 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"),
)
运行
python setup.py build_ext --inplace
我得到以下错误:
copying buildlib.win-amd64-2.7cython_testhello.pyd -> cython_test
error: [Errno 2] No such file or directory: 'cython_test\hello.pyd'
构建过程工作正常,我得到一个工作的hello.pyd
文件,但由于某种原因setup.py不能将.pyd
复制回工作目录。我怎样才能解决这个问题呢?
你好。pyx和setup.py文件也可以在BitBucket
我已经解决了这个问题。python setup.py
命令应该在工程目录外执行。下面的代码可以正常工作。
cd ..
python setup.py build_ext --inplace
更新:解决问题的更好方法是将package_dir
选项指定为setup
功能:
setup(
name='Hello world app',
package_dir={'cython_test': ''},
ext_modules=cythonize("hello.pyx"),
)
希望这对遇到此错误的其他人有用。经过一番挖掘,我的问题是由于同一目录下的__init__.py
文件。这个github问题突出了潜在的问题。在删除__init__.py
之后,我现在在目录中得到了正确的.pyd
文件。