I'm trying change my package over from using setup.py
to using pyproject.toml
and setup.cfg
.
My setup.cfg
is roughly as follows:
[metadata]
name = our_name
version = 0.1.1
author = me
[options]
install_requires =
networkx >= 3.0
My code is all under src
, and I'm relying on the automatic src-layout
discovery mechanism.
When I run
python -m build
it generates a proper wheel file (dist/our_name-0.1.1-py3-none-any.whl
). When I unpack that wheel file, everything is in there properly - it seems to have discovered all my code correctly.
However, when I install it (pip install dist/our_name*.whl
), only the distribution info directory shows up in site-packages
. Because the dist info is there, pip list
shows it as being there, but because the actual module directory is missing, I can't import anything from my module elsewhere, or do anything with it.
Any clue what I'm doing wrong?
Addendum: Per sinoroc's comment:
pyproject.toml
:
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
project structure:
README.md
requirements.txt
src
__init__.py
module_1
__init__.py
foo.py
module_2
__init__.py
bar.py
Wheel contents:
__init.py__
our_name-0.1.1.dist-info
METADATA
RECORD
top_level.txt
WHEEL
module_1
__init__.py
foo.py
module_2
__init__.py
bar.py
It seems like maybe you misunderstood what the src
layout is. This project structure your are showing does not have a typical src
layout. For example there should not be any src/__init__.py
file. And also I am wondering if you really want to have 2 importable top-level packages module_1
and module_2
, because it seems to be what you have right now and that is also not typical.
I recommend you look at this packaging tutorial and this part of setuptools documentation again. Pay attention to the project directory structure.