无法在开发模式下使用本地构建的 python 包

Unable to use locally built python package in development mode

我正在尝试启动一个超级简单的程序包来验证概念,但我看不出我缺少什么。

我的目标是能够做到以下几点:

python3 import mypackage
mypackage.add2(2)
>> 4

Github link

我创建了一个 public 存储库来重现该问题 here

git clone https://github.com/OliverFarren/testPackage

问题

我有一个基本的文件结构如下:

src/
   mypackage/
      __init__.py
      mymodule.py
setup.cfg
setup.py
pyproject.toml

setup.cfg 是来自 here

的漂亮样板

setup.py 只是为了让 pip install 处于可编辑模式:

import setuptools
setuptools.setup()

我 运行 在我的 Pycharm 虚拟环境的顶级目录中执行以下命令:

python3 -m pip install --upgrade build
python3 -m build

这创建了我的 distbuild 目录以及 mypackage.egg-info 文件,所以现在目录如下所示:

testpackage
 build/
   bdist.linux-x86_64/
 dist/
   mypackage-0.1.0.tar.gz
   mypackage-0.1.0-py3-none-any.whl
 src/
   mypackage/
      mypackage.egg-info
      __init__.py
      mymodule.py
 setup.cfg
 setup.py
 pyproject.toml

然后我尝试按如下方式安装软件包:

sudo pip3 install -e .
Installing build dependencies ... done
Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Installing collected packages: mypackage
  Running setup.py develop for mypackage
Successfully installed mypackage

我认为应该已经安装了它。除了当我尝试导入包时,我得到一个 ModuleNotFoundError

我想知道这是否是某种权限问题。当我尝试时:

sudo pip3 list
pip3 list

我注意到我得到了不同的输出,我可以在列表和 sys.path:

中看到我的包裹
~/testpackage/src/mypackage'

我只是不明白我在这里错过了什么。如有任何建议,我们将不胜感激!

好的,我发现了问题。发布解决方案并保留 github 存储库 - 修复,以防其他人遇到此问题。

原来我的setup.cfg不是样板。

这是我的错误代码:

[metadata]
# replace with your username:
name = mypackage
author = Oliver Farren
version = 0.1.0
description = Test Package

classifiers =
    Programming Language :: Python :: 3
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent

[options]
package_dir =
    = src/mypackage
packages = find:
python_requires = >=3.6

[options.packages.find]
where = src/mypackage

src/mypackage 应该是 src,它正在内部 寻找包裹。

调试此问题的关键步骤是检查 mypackage.egg.info 文件。 SOURCES.txt 包含构建包中所有文件的列表,我可以清楚地看到在错误的构建中,src/mypackage/mymodules.pysrc/mypackage/__init__.py 丢失了。所以 pip 正确安装了这个包,但是它是空的导致了一个非常混乱的错误消息。