You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<h3 id="Tooling">Tooling<a class="anchor-link" href="#Tooling">¶</a></h3><p><code>pipenv</code> is currently the recommended tool for dependency management but <a href="https://packaging.python.org/guides/tool-recommendations/#application-dependency-management">"consider other tools such as pip when pipenv does not meet your use case"</a>. If <code>pipenv</code> doesn't fit your use case, I recommend using <code>virtualenvwrapper</code> for managing virtual environments and <code>pip</code> for package management. On the other hand, if you're working on only a couple of projects, built-in <a href="https://docs.python.org/3/library/venv.html"><code>venv</code></a> will do just fine.</p>
<li>Basically combines <code>pip</code> and <code>virtualenv</code> under single CLI</li>
15155
-
<li><a href="https://pipenv.readthedocs.io/en/latest/basics/#example-pipfile">Pipfile</a> which replaces the need for requirements.txt and requirements-dev.txt</li>
15156
-
<li><a href="https://pipenv.readthedocs.io/en/latest/basics/#example-pipfile-lock">Pipfile.lock</a> which pins dependencies, this means deterministic builds</li>
15157
-
<li>Possibility to visualize the <a href="https://pipenv.readthedocs.io/en/latest/#pipenv-graph">dependency graph</a></li>
15158
-
<li><a href="https://pipenv.readthedocs.io/en/latest/advanced/#automatic-python-installation">Compatible with <code>pyenv</code></a></li>
15152
+
<h3 id="Tooling">Tooling<a class="anchor-link" href="#Tooling">¶</a></h3><p><code>poetry</code> is currently the recommended tool for dependency management but <a href="https://packaging.python.org/guides/tool-recommendations/#application-dependency-management">"consider other tools such as pip when poetry does not meet your use case"</a>. If <code>poetry</code> doesn't fit your use case, I recommend using <code>virtualenvwrapper</code> for managing virtual environments and <code>pip</code> for package management. On the other hand, if you're working on only a couple of projects, built-in <a href="https://docs.python.org/3/library/venv.html"><code>venv</code></a> will do just fine.</p>
<h3 id="Tooling---code-formatters">Tooling - code formatters<a class="anchor-link" href="#Tooling---code-formatters">¶</a></h3><p><a href="https://www.python.org/dev/peps/pep-0008/?">PEP8</a> (see also <a href="https://pep8.org/">"for humans version"</a>) describes the style guidelines for Python code, you should follow them. Luckily, there are awesome tools that handle this for you while you focus on writing code, not formatting it.</p>
<h3 id="Tooling">Tooling<a class="anchor-link" href="#Tooling">¶</a></h3><p>Tooling depends on which git repository manager option you've chosen and what kind of requirements you have. For example:</p>
15613
15562
<ul>
15614
-
<li>Gitlab has a built-in <a href="https://about.gitlab.com/features/gitlab-ci-cd/">integrated CI/CD</a></li>
<li>If you're using Gitlab, it also has <a href="https://about.gitlab.com/features/gitlab-ci-cd/">integrated CI/CD</a></li>
15615
15565
<li>Same for <a href="https://www.atlassian.com/continuous-delivery/continuous-integration-tutorial">BitBucket</a></li>
15616
-
<li>If you're using GitHub, see <a href="https://github.com/marketplace/category/continuous-integration">full list of available tools</a></li>
15617
-
<li>There's an extensive comparison of different providers in <a href="https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software">wikipedia</a></li>
<li>Find the performance bottlenecks of your application via illustrative graphs</li>
15790
-
<li>If you're using <code>pytest</code> (like you should), see also <a href="https://pypi.org/project/pytest-profiling/"><code>pytest-profiling</code></a> which is powered by <code>gprof2dot</code></li>
<li>If you're building applications, use the latest Python.</li>
15835
+
<li>If you're building libraries, make sure they support also older Python versions.</li>
15928
15836
<li>Develop in branches. Even if you're the only person in the project, branching makes it possible to easily switch between different features / bug fixes.</li>
15929
15837
<li>If you're not developing alone, practice code reviews. It's one of the best ways to learn for both parties.</li>
0 commit comments