Sto refactoring la struttura di directory di un repository Python di grandi dimensioni che contiene una dozzina di file C e C ++ disseminati ovunque. Esiste un architettura suggerita per un pacchetto Python che contiene codice C / C ++ al suo interno? Quello che ho al momento per il mio repository foo
è:
foo/
├── LICENSE
├── Makefile
├── README.md
├── docs/
├── examples/
├── foo/
│ ├── __init__.py
│ ├── README.md
│ ├── core/
│ │ ├── __init__.py
│ │ ├── foo_tricks_slow.py
│ │ ├── foo_tricks_fast.cpp
│ │ └── foo_tricks_fast.mk
│ ├── experiments/
│ └── utils/
├── requirements.txt
├── setup.py
└── tests/ # Run with py.test
├── __init__.py
└── test_foo.py
Ogni subdir core/
, experiments/
, utils/
e così via contiene principalmente file python e alcuni file C / C ++.
Alcune cose su cui ho sentito opinioni contrastanti su cui vorrei arrivare a una conclusione includono
- Mettere i test al di fuori del pacchetto Python
- Mettere sorgente in una
src/
dir - Mantenere una directory per Python e una directory per C / C ++
Alcune fonti di informazioni che ho visto includono:
A. Struttura del filesystem di un progetto Python di Jean-Paul Calderone
B. cookiecutter
C. post sul blog di Jeff Knupp
D. Questa domanda SO è vicina, ma io non ho un progetto C ++ autonomo, ma piuttosto un misc. file, ciascuno con il proprio file mk
che viene accumulato durante l'esecuzione del Makefile principale.
E. Repository di esempio come Tensorflow, Keras, Nupic, Django
Relativo : vorrei che il repository fosse installato e compilato con pip install foo
. Non sono sicuro di come questo potrebbe anche costruire i file C / C ++. Ad esempio, pip install tensorflow
lo raggiunge. Forse è per una seconda domanda SO però.