首页 > 解决方案 > 安装时上传的 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__

标签: python-3.xpypi

解决方案


需要将子目录添加到

packages=['package1', 'package2', 'etc']

setup.py 的一部分。就我而言,我必须添加 abc 目录才能将其放置在 catapi 安装中

packages=['catapi', 'catapi.abc'],

推荐阅读