在包中找不到子模块

2024-06-16 09:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得问这个问题有点傻,因为有很多类似的问题,但我诚实地到处搜索,找不到解决这个问题的方法。下面是:

我有一个Python包(关于TestPyPihere是源代码,请注意,它使用并且需要python3.8),具有以下结构:

paillier/
    setup.py
    test/
    paillier/
        __init__.py
        keygen.py
        util/
            __init__.py
            math_shortcuts.py

我的用例是:在keygen.py中,我想使用util/math_shortcuts.py
因此,在keygen.py中,我有以下导入: from paillier.util.math_shortcuts import generate_coprime, lcm, get_mu
然而,当我尝试使用我的包时(通过执行from paillier.keygen import generate_keys),我遇到了错误ModuleNotFoundError: No module named 'paillier.util'

当我从TestPyPi使用pip安装它时,这个moduleNotFound错误总是存在的,但是当我在本地构建包时,它不会发生:当我在paillier/目录(其中setup.py中运行pip install -e .时,即使我的工作目录在其他地方,我也可以运行^{}

我试过做from .util.math_shortcuts ...,或from util.math_shortcuts ...,或from paillier.paillier.util.math_shortcuts ...,但都没有用


简而言之,在执行pip install --index-url <TestPyPi> rens-paillier时,我的文件似乎找不到子模块。
但是,在外部paillier/目录中执行pip install -e .时,它似乎起作用


Tags: installpipfrompyimport目录initutil
1条回答
网友
1楼 · 发布于 2024-06-16 09:32:55

我遇到了同样的问题。(my-e安装成功,普通安装没有)我的解决方案是,在setup.py中实际命名子包

packages=['paillier', 'paillier.util']

虽然这是可行的,但我不知道为什么:D

相关问题 更多 >