I'm refactoring the directory structure of a large Python repo that has a few dozen C and C++ files littered throughout. Is there a suggested architecture for a Python package that contains C/C++ code within it? What I have at the moment for my repo foo is:

├── 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

Each subdir core/, experiments/, utils/, and so on contains mostly python files, and some C/C++ files.

Some things I've heard mixed opinions on that I'd like to reach a conclusion on include

  1. Putting tests outside the Python package
  2. Putting source in a src/ dir
  3. Keeping a directory for Python and a directory for C/C++

Some sources of info I've looked at include:

A. Filesystem structure of a Python project by Jean-Paul Calderone

B. cookiecutter

C. Jeff Knupp's blog post

D. This SO question is close, but I don't have a self-contained C++ project, but rather some misc. files, each with their own mk file that gets accumulated when running the main Makefile.

E. Example repositories like Tensorflow, Keras, Nupic, Django

Related: I would like the repo to be installed and built with pip install foo. I'm unsure how this would also build the C/C++ files though. For example, pip install tensorflow accomplishes this. Perhaps that's for a followup SO question though.

  • 2
    Your folder structure does not constitute a software architecture. – Robert Harvey Jul 26 '17 at 23:44
  • TensorFlow installs precompiled libraries. If you install it from sources, you need more steps than just pip install tensorflow – mouviciel Jul 27 '17 at 9:35
  • Would you explain more @RobertHarvey? Or if you're just arguing semantics, would you prefer "repo structure"? – BoltzmannBrain Jul 27 '17 at 15:59
  • 1
    "Folder structure" or "directory structure." – Robert Harvey Jul 27 '17 at 17:52

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.