Katalogu z virtualenvem nie wkładasz do gita, możesz go wstawiać do .gitignore. Zawiera on binarki, biblioteki i interpreter. Istnieje również takie coś jak virtualenvwrapper, który ułatwia zarządzanie wirtualnymi ścieżkami, trzymając je w wybranej lokalizacji (np. ~/.virtualenvs
, zobacz tutorial), żeby mieć porządek w katalogu z projektem. W katalogu projektem tworzysz sobie plik requirements.txt
, w którym wypisujesz zależności, opcjonalnie razem z wersjami. Jak ktoś będzie chciał uruchomić twój projekt, to sobie zainstaluje.
W katalogu z projektem leży też plik setup.py
, który pozwala na instalację twojego softu, oraz konfigi do różnych narzędzi, takich jak tox. Kod źródłowy można wrzucić w katalogu o tej samej nazwie co sam projekt (albo src/nazwa_projektu
), obok leżą pliki z testami oraz dokumentacja (z reguły projekt Sphinx). Wychodzi z tego coś takiego:
$ tree mylib/
mylib/
├── docs
├── mylib
│ ├── __init__.py
│ ├── some_class.py
│ └── some_utils.py
├── README.md
├── setup.py
├── tests
└── tox.ini
virtulenv
może sobie siedzieć gdziekolwiek, bylebyś go miał jak aktywować. Więcej dyskusji tutaj.
Generalnie ponieważ układanie tego wszystkiego to ból tyłka, polecam projekt pyscaffold, który generuje ci gotowy do wypełnienia szablon do projektów.
$ putup test_project
$ tree test_project/
test_project/
├── AUTHORS.rst
├── CHANGELOG.rst
├── docs
│ ├── authors.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── index.rst
│ ├── license.rst
│ ├── Makefile
│ └── _static
├── LICENSE.txt
├── README.rst
├── requirements.txt
├── setup.cfg
├── setup.py
├── src
│ └── test_project
│ ├── __init__.py
│ └── skeleton.py
└── tests
├── conftest.py
└── test_skeleton.py
5 directories, 17 files
Analiza wygnerowanego szablonu będzie pouczająca. virtualenv
tworzysz sobie własny, gdzie ci wygodnie. Co do bundlowania - od tego mamy setup.py
. PyScaffold powyżej już nam takiego wygenerował. Żeby zainstalować ten projekt w danym środowisku, wchodzimy do niego i odpalamy:
$ cd test_project
$ python setup.py install
Możemy teraz uruchomić liba:
Python 3.7.3 (default, Aug 20 2019, 17:04:43)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from test_project.skeleton import fib
>>> fib(10)
55
>>>
Testy możesz sobie odpalić
$ python setup.py test
Dokumentacje budujesz tak:
$ cd docs
$ make html
Będą leżeć w ./build/sphinx/html
(trzeba mieć Sphinxa - pip install sphinx
).