python - 在包中找不到子模块
问题描述
我觉得问这个有点愚蠢,因为有很多类似的问题,但老实说,我已经搜索了很多,找不到解决方案。开始:
我有一个 Python 包(在TestPyPi上,这里是源代码,注意它使用并需要 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
当我使用from安装它时,这个 ModuleNotFoundError 总是存在TestPyPi
,但是当我在本地构建包时它不会发生:当我pip install -e .
在paillier/
目录(所在的位置setup.py
)中运行时,我可以运行from paillier.keygen import generate_keys
,即使我的工作目录在其他地方。
我尝试过from .util.math_shortcuts ...
, or from util.math_shortcuts ...
, or from paillier.paillier.util.math_shortcuts ...
, 但都无济于事。
简而言之,在做pip install --index-url <TestPyPi> rens-paillier
我的文件时似乎找不到子模块。
但是,pip install -e .
在外部paillier/
目录中执行时,它似乎可以工作。
解决方案
我遇到了同样的问题。(我的 -e 安装有效,正常安装没有)我的解决方案是,在 setup.py 中实际命名子包。
packages=['paillier', 'paillier.util']
虽然这有效,但我不知道为什么:D
推荐阅读
- vb.net - 行数 System.Data.DataTableReader
- c - 如何解释这个 PMAP 输出?
- r - 拒绝采样循环在 R 中产生“长度为零”错误
- reactjs - 运行“npm start”后出现编译失败错误
- javascript - 数据录入成功无提示
- graphql - 模式中的 Postgraphile 更改字段案例
- reactjs - 如何在 ReactJs 中向数组中添加一些数字
- javascript - 如何从 JavaScript 中的给定值更改 div 颜色
- javascript - Array.filter 在返回的变量更改时重复
- r - plotHR (package Greg) - Spline-Plot - 根据 x 值手动设置危险比 = 1