python - 在包内找不到子模块

标签 python python-3.x python-import modulenotfounderror

我觉得问这个问题有点愚蠢,因为有很多类似的问题,但老实说我已经搜索了很多,但找不到解决方案。这里是:

我有一个Python包(在TestPyPi上,here是源代码,注意它使用并需要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'

当我使用pip安装它时,这个ModuleNotFoundError总是存在来自TestPyPi ,但是当我在本地构建包时不会发生这种情况:当我运行 pip install -e . 时在 paillier/目录(setup.py 所在的位置),我可以运行 from paillier.keygen import generate_keys ,即使我的工作目录在其他地方。

我尝试过from .util.math_shortcuts ... ,或from util.math_shortcuts ... ,或from paillier.paillier.util.math_shortcuts ... ,但一切都无济于事。


简而言之,当做pip install --index-url <TestPyPi> rens-paillier时我的文件似乎找不到子模块。
然而,当做pip install -e .时在外paillier/ dir,它似乎有效。

最佳答案

我也遇到了同样的问题。 (我的 -e 安装有效,正常安装无效)我的解决方案是,在 setup.py 中实际命名子包。

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

虽然这有效,但我不确定为什么:D

关于python - 在包内找不到子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62249207/

相关文章:

python - pymc 中的标准化贝叶斯 IRT 模型

python - 将数据框的第三列放在下一行

python - 如何确定 setup.py 中实际需要哪些要求?

python - 运行另一个不同的模块时,模块的子模块出现导入错误

python - 为什么在 Python 中有多余的导入方式?

python - 如何以更Pythonic的方式编写函数?

python - Django 提取值并使它们成为另一个页面中的占位符

python-2.7 - Python 2.7 异常不处理 python3 兼容代码中的 unicode ('<exception str() failed>' )

python-3.x - 强制 docker 容器中的 SeleniumHQ 关闭所有浏览器 session

python - 从 Python 文件路径导入变量