This is a Python Packaging Helper Environment that helps beginner's in python get acquainted with the concepts of Building,Packages and Managing them. This tutorial gives beginners a complete flow of how python packages are done in the industries.
Please do the following:
-
Create a new git repository with git-init(1). Commit as desired. If you're worried about losing any of the sample code that you're writing, create a new GitHub repository, skim git-remote(1), and push your code to your new GitHub repository.
-
Within this git repository, create the following directory structure:
. ├── my_package │ └── tests.py └── setup.py
-
Read the unittest documentation from the beginning through section 26.4.2.0. (That is, read until section 26.4.2.1.) In addition, skim the list of methods exposed by
unittest.TestCase
. -
Create a test case in
tests.py
. Within this test case, create one test method for each of the following assertions:- '0.1' is equal to '0.1'
- '0.1' is less than '0.2'
- '0.2' is greater than '0.10'
Do not use the
assertTrue
method for these assertions. There are other, more targeted methods, as mentioned in step 3. Verify that the tests pass. -
Read packaging and distributing projects. Feel free to skim the "setup() args" section.
-
Create a virtualenv using
python3 -m venv ...
, and activate it. Populate yoursetup.py
with just enough information to be valid. Install your package into the virtualenv in "editable mode," e.g. withpip install --editable .
. Change to an entirely different directory (e.g. withcd ~
), and verify that you can execute tests withpython -m unittest my_package.tests
. -
Add
install_requires
tosetup.py
, and depend on packaging. Verify thatpip install --editable .
pulls in the packaging library. You can verify this withpip freeze
. -
Add a new test case into the
tests.py
file. Within this test case, create one test method for each of the following assertions:- Version('0.1') is equal to Version('0.1')
- Version('0.1') is less than Version('0.2')
- Version('0.2') is less than Version('0.10')
Do not use the
assertTrue
method for these assertions. There are other, more targeted methods, as mentioned in step 3. Verify that the tests pass. -
Add
extras_require
tosetup.py
, and create a "dev" section that lists "pylint." See the docs for an example of how to do this. Verify thatpip install --editable .[dev]
pulls in pylint. You can verify this withpip freeze
. -
Execute
pylint my_package
. Fix all warnings. -
Deactivate your virtualenv. Blow it away, e.g. with
rm -rf path/to/virtualenv
. Create a new one. Install your Python package into this virtualenv. Verify that you can move to a different directory and successfully execute the tests, e.g. withcd ~ && python -m unittest my_package.tests
. -
Once Done with managing the packages locally, The package can be distributed to the remote. This works by creating aPypI account first. Install twine
pip install twine
. Setting up the Build files usingpython setup.py sdist
andpip install wheel
followed bypython setup.py bdist_wheel --universal
. Then run the upload by usingtwine upload dist/*
. for more infor refer docs -
The above step is used for installing the package. However to install and make the packages available on import statements, use packages=setuptools.find_packages() in the
setup.py
file.