python-3.x - 安装时上传的 pypi 包缺少模块
问题描述
我已经创建了一个 python 包,并希望在 pypi ( https://pypi.org/project/catapi.py/ ) 上分发它。我最初的 v0.1.1 上传工作没有问题。我决定添加一个子目录来存储抽象类,因为有很多代码重用。将其上传到 pypi 并安装后,我收到 abc 模块不存在的消息。
我做了一些研究,发现我必须在 MANIFEST.in 文件中包含子目录,所以我做了。在上传并再次尝试安装时,我得到了同样的错误。我直接下载了包,解压文件发现abc目录确实存在。接下来我检查了 catapi 的 site-packages 版本,发现它没有 abc 模块。
有没有人遇到过这个并且知道如何解决这个问题?这是一个显示问题的脚本
# make a temp dir to hold this in
mkdir catapi
cd catapi
# Prepare python venv
python -m venv env-catapi
source env-catapi/bin/activate
pip install catapi.py==0.3.4
# Download file for comparison
wget https://files.pythonhosted.org/packages/ac/ee/044c1cc53e7c994fe4a7d57362651da8adff54eb34680c66f62a1d4fb57d/catapi.py-0.3.4.tar.gz
tar -xvf catapi.py-0.3.4.tar.gz
diff catapi.py-0.3.4/catapi env-catapi/lib/python3.8/site-packages/catapi
deactivate
cd ../
# Prints out
# Only in catapi: abc
# Only in env-catapi/lib/python3.8/site-packages/catapi: __pycache__
解决方案
需要将子目录添加到
packages=['package1', 'package2', 'etc']
setup.py 的一部分。就我而言,我必须添加 abc 目录才能将其放置在 catapi 安装中
packages=['catapi', 'catapi.abc'],
推荐阅读
- docker - 生产网络上的 docker macvlan network dhcp dns
- r - mlogit:具有截距的多项概率模型返回错误
- django - 过滤对象的动态按钮 Django @UPDATE
- php - 在 Codeigniter 中提交或更新任何内容后不显示更新的数据
- django - `.create()` 方法默认不支持可写嵌套字段
- django - django.db.utils.IntegrityError:重复键值违反唯一约束
- java - 如何在Java中的正则表达式上返回多个匹配项
- insomnia - 失眠 - 使用 OATH2.0 如何将访问令牌拉入变量?
- sql-server - 在文本列上创建索引是否会使搜索成本更高?
- python - Python-“SyntaxError:无效语法”或 FileNotFoundError 或(unicode 错误)