Python Project Layout: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 45: Line 45:
</font>
</font>


Example of <code>run</code>:
==Bash Wrapper==
<font size=-1>
 
#!/usr/bin/env bash
<syntaxhighlight lang='bash'>
$(dirname $0)/venv/bin/python $(dirname $0)/src/main/python/main.py
#!/usr/bin/env bash
</font>
 
function main() {
  init_venv "$@"
  PYTHONPATH="$(dirname $0)/src"
  export PYTHONPATH
  "$(dirname $0)/venv/bin/python3" -m gpm "$@"
}
 
function init_venv() {
  echo 'init_venv'
}
 
main "$@"
</syntaxhighlight>
 
=Organizatorium=
=Organizatorium=

Revision as of 19:35, 25 October 2022

Internal

Overview

A typical Python project layout, which allows for code written in other programming languages as well, is similar to:

.
├─ .gitignore
├─ requirements.txt
├─ run
├─ src
│   └─ mypackage
│       ├─  __init__.py
│       ├─  __main__.py 
│       └─ VERSION
├─ tests
│   └─ mypackage
│       ├─  
│           
└─ venv # created automatically upon virtual environment initialization
      ├─ bin
 
 

Setting a Manual Project

A project set up this way will be compatible with PyCharm. Also see:

Simple PyCharm Project

Add the dependencies to requirements.txt. For more details, see:

requirements.txt

Initialize the virtual environment:

cd ${PROJECT_HOME}
python3 -m venv venv
venv/bin/pip install -r ./requirements.txt

For more details on virtual environments, see:

Virtual Environment

Example of .gitignore:

venv/

Bash Wrapper

#!/usr/bin/env bash

function main() {
  init_venv "$@"
  PYTHONPATH="$(dirname $0)/src"
  export PYTHONPATH
  "$(dirname $0)/venv/bin/python3" -m gpm "$@"
}

function init_venv() {
  echo 'init_venv'
}

main "$@"

Organizatorium