Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cython编译错误:动态模块未定义模块导出函数_Python_Numpy_Cython - Fatal编程技术网

Python Cython编译错误:动态模块未定义模块导出函数

Python Cython编译错误:动态模块未定义模块导出函数,python,numpy,cython,Python,Numpy,Cython,我正在用Cython构建一个包。我使用以下内容作为setup.py的结构: from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import numpy import scipy extensions = [ Extension("xxxxx",["xxxx/xxxxx.pyx"], include_dirs=[

我正在用Cython构建一个包。我使用以下内容作为
setup.py
的结构:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
import numpy
import scipy

extensions = [
    Extension("xxxxx",["xxxx/xxxxx.pyx"],
    include_dirs=[numpy.get_include(),"."]),
    Extension("nnls",["xxxxx/xxxxx.pyx"],
              include_dirs=[numpy.get_include(),"."]),
]

setup(
    name='xxxxxx',
    version='0.0.0',
    description='''********''',
    url='xxxxxxx',
    author='xxxxx',
    author_email='xxxxx',
    packages=[
        'xxxxx',
    ],
    install_requires=[
        'cython',
        'numpy',
        'scipy',
    ],
    ext_modules=cythonize(extensions),
)
然而,我在Python3中安装时遇到了一个错误。它在Python 2中工作,但在Python 3中编译时没有出现以下错误:

动态模块未定义模块导出功能


我怎样才能解决这个问题?
setup.py的结构是否是不编译的原因

您需要使用Python 3调用setup.py(
python3 setup.py build\u ext
,可能是
--inplace
)。这是因为Python3为模块启动时调用的
init
函数定义了一个不同的名称,因此您需要使用Python3构建它,以确保生成正确的名称


有关更多详细信息,请参见和(这些问题几乎是重复的,但我并不这么认为)

我经历过这种情况,发现我必须使用与模块名称相同的名称.pyx,例如

生成文件:

# (default)
# INSTALL_DIR:=/usr/lib/python3.6/site-packages
# (my venv)
INSTALL_DIR:=/home/<username>/python3_venv/lib/python3.6/site-packages
all:
    sudo python3 setup_myproj.py install --install-lib ${INSTALL_DIR}
我还发现,如果“myproj”名称不同,则在
//站点包
下,.so和.egg信息名称不同,客户端无法加载它


此外,我发现客户端环境不需要安装
cython
软件包。

对于
torchvision
,我也有同样的错误。通过降级安装版本修复了此问题:

pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html

你能评论一下你使用的是什么操作系统吗?@jxramos-Debian-Linux
import myproj as myCppProjWrapper
...
pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html