尝试在setup.py中指定的同一软件包内安装Python扩展模块(Cython)时使用ModuleNotFound

列维·纳登(Levi Naden)

我有一个Python项目的Cython扩展模块,我想将其安装到与安装时项目相同的名称空间。当我尝试在扩展名中指定将其安装在软件包本身中时,找不到并导入了它。如果我指定扩展名位于Python名称空间的根目录中,则可以正常工作,但不在所需的模块名称空间中。如何使扩展模块可从与程​​序包本身相同的名称空间导入?

我为这个问题做了一个简单的测试用例。

资料夹结构:

mypkg
├── foo
│   ├── __init__.py
│   └── barCy.pyx
└── setup.py

.barCy.pyx文件中:

cpdef long bar():
    return 0

setup.py代码:

import distutils.extension
from Cython.Build import cythonize

from setuptools import setup, find_packages

extensions = [distutils.extension.Extension("foo.bar",
                                            ['foo/barCy.pyx'])]
setup(
        name='foo',
        packages=find_packages(),
        ext_modules=cythonize(extensions),
        )

__init.py__是空的。

我希望能够做到:

>>> import foo.bar as bar
>>> bar.bar()
0

相反,我得到

>>> import foo.bar as bar
ModuleNotFoundError: No module named 'foo.bar'

如果我将更Extension("foo.bar",...改为Extension("bar",...,则可以将import bar其作为顶级软件包。尽管这是预期的行为,但这不是我想要的,因为我只希望可以通过foo名称空间访问此扩展模块

列维·纳登(Levi Naden)

我的Python解释器是从与setup.py脚本相同的文件夹中运行的,所以这样做import foo是导入本地软件包,而不是导入安装在Python解释器site-packages目录中的软件包由于它们具有相同的文件夹结构,因此选择了本地目录作为取代的导入包。

从不同于源的文件夹进行测试/运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用setup.py安装软件包

使用setup.py安装软件包时出现问题

使用setup.py安装软件包时未创建Pyenv垫片

尝试使用dpkg安装软件包时出现错误

使用setup.py更新Python软件包

尝试安装Cython:下载的Cython目录中没有setup.py

尝试使用APT安装软件包时“无法找到软件包”

python setup.py install 尝试在 Win 64 位上安装 Xgboost 时失败

尝试使用python-apt API安装软件包时发生错误

尝试与货物一起安装软件包时出现“错误:指定的软件包没有二进制文件”?

ModuleNotFoundError:尝试为Django安装Python软件包时,没有名为“ pip.download”的模块

Virtualenv pip ssl-尝试安装任何软件包时失败。错误:“ Python中的ssl模块不可用”

从 setup.py 中列出已安装的软件包

尝试安装pyodbc wheel文件时缺少pip install setup.py

尝试从GitHub安装时,软件包安装失败

安装python软件包,并显示“命令“ python setup.py egg_info”失败”吗?

运行setup.py时更改软件包名称

如何使用setup.py安装车轮式软件包

使用setup.py和wheel安装软件包依赖项

如何使用setup.py安装在私有PyPI中托管的软件包?

尝试从全新的18.04安装进行安装时,“无法找到软件包python-pip”

尝试通过 cmd 行安装软件包时出错

R-尝试安装软件包时:InternetOpenUrl失败

尝试安装或删除软件包时卡在“解包”状态

尝试安装节点软件包时出现zlib错误

尝试安装软件包时出现Setuptools错误

尝试安装软件包时输出错误

尝试从GitHub安装软件包时出错

尝试从pip安装软件包时出现问题