I'm new to Python and I'm starting a mini Project, but I have some doubts on how to organize the folders in the "Python Way".
I'm using PyDev
in my Development Environment, and when I create a new project a folder is created called src
+ src
Now, in the PyDev
, I can create Pydev Module
and PyDev Package
I need to organize my Project in the following way:
+ Indicators
- Moving_averages.py
- Stochastics.py
+ Strategies
- Moving_averages_cross.py
- example.py
How can I organize this in terms of Modules and Packages? What is the meaning of Modules and Packages?
A Package is basically a folder with __init__.py
file under it and usually some Modules, where Module is a *.py
file.
It has to do with import
mainly. If you add __init__.py
to Indicators you can use:
from Indicators.Stochastics import *
or
from Indicators import Stochastics
By the way, I would recommend to keep module/package names lowercase. It does not affect functionality but it's more "pythonic".
From a file system perspective, a module is a file ending with .py
and a package is a folder containing modules and (nested) packages again. Python recognizes a folder as a package if it contains a __init__.py
file.
A file structure like that
some/
__init__.py
foofoo.py
thing/
__init__.py
barbar.py
defines the package some
, which has a module foofoo
and a nested package thing
, which again has a module barbar
. However, when using packages and modules, you don't really distinguish these two types:
import some
some.dothis() # dothis is defined in 'some/__init__.py'
import some.foofoo # <- module
import some.thing # <- package
Please follow PEP8 when selecting naming your packages/modules (i.e. use lower-case names).
See python-package-template
Directory structure
.
|-- bin
| `-- my_program
|-- docs
| `-- doc.txt
|-- my_program
| |-- data
| | `-- some_data.html
| |-- __init__.py
| |-- submodule
| | `-- __init__.py
| |-- helpers.py
|-- tests
| |-- __init__.py
| |-- test_helpers.py
|-- Makefile
|-- CHANGES.txt
|-- LICENSE.txt
|-- README.md
|-- requirements-dev.txt
|-- requirements.txt
`-- setup.py
cat Makefile
PYTHON=`which python`
NAME=`python setup.py --name`
all: check test source deb
init:
pip install -r requirements.txt --use-mirrors
dist: source deb
source:
$(PYTHON) setup.py sdist
deb:
$(PYTHON) setup.py --command-packages=stdeb.command bdist_deb
rpm:
$(PYTHON) setup.py bdist_rpm --post-install=rpm/postinstall --pre-uninstall=rpm/preuninstall
test:
unit2 discover -s tests -t .
python -mpytest weasyprint
check:
find . -name \*.py | grep -v "^test_" | xargs pylint --errors-only --reports=n
# pep8
# pyntch
# pyflakes
# pychecker
# pymetrics
clean:
$(PYTHON) setup.py clean
rm -rf build/ MANIFEST dist build my_program.egg-info deb_dist
find . -name '*.pyc' -delete
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With