checkMyApp

Tool for building python setup files.


License
MIT
Install
pip install checkMyApp==0.0.2

Documentation

checkMyApp

python tool to check project structure and setup file

Building (wheel)

python setup.py sdist bdist_wheel

Download via pip

pip install checkMyApp

Usage

Got to the folder where your application's setup.py resides and run: "checkMyApp"

Example

(root@machine)# checkMyApp

CheckMyApp report for python packaging Legend: Warning Error OK

Please note: This tools uses python's 'exec' function in order to parse setup.py This can be dangerous if you'r not familiar with the code inside setup.py.

Please approve the usage of the tool by typing 'yes' (or CTRL+c to cancel): yes

  • packages are not declared with 'find_packages()'
  • Couldn't load the following requirements: ['absl-py==0.2.1', 'alabaster==0.7.9', 'anaconda-client==1.6.0', 'anaconda-navigator==1.5', 'anaconda-project==0.4.1', 'argcomplete==1.0.0', 'astor==0.6.2', 'astroid==1.4.9', 'astropy==1.3', 'Babel==2.3.4', 'backports-abc==0.5', 'backports.shutil-get-terminal-size==1.0.0', 'beautifulsoup4==4.5.3', 'bitarray==0.8.1', 'blaze==0.10.1', 'bleach==1.5.0', 'bokeh==0.12.4', 'boto==2.45.0', 'Bottleneck==1.2.0', 'cffi==1.9.1', 'chardet==2.3.0', 'chest==0.2.3', 'click==6.7', 'cloudpickle==0.2.2', 'clyent==1.2.2', 'colorama==0.3.7', 'configobj==5.0.6', 'contextlib2==0.5.4', 'cryptography==1.7.1', 'cycler==0.10.0', 'Cython==0.25.2', 'cytoolz==0.8.2', 'dask==0.13.0', 'datashape==0.5.4', 'decorator==4.0.11', 'dill==0.2.5', 'docutils==0.13.1', 'et-xmlfile==1.0.1', 'fastcache==1.0.2', 'Flask==0.12', 'Flask-Cors==3.0.2', 'future==0.17.1', 'gast==0.2.0', 'gevent==1.2.1', 'greenlet==0.4.11', 'grpcio==1.12.0', 'h5py==2.6.0', 'HeapDict==1.0.0', 'html5lib==0.9999999', 'idna==2.2', 'imagesize==0.7.1', 'ipykernel==4.5.2', 'ipython==5.1.0', 'ipython-genutils==0.1.0', 'ipywidgets==5.2.2', 'isort==4.2.5', 'itsdangerous==0.24', 'jdcal==1.3', 'jedi==0.9.0', 'Jinja2==2.9.4', 'jsonschema==2.5.1', 'jupyter==1.0.0', 'jupyter-client==4.4.0', 'jupyter-console==5.0.0', 'jupyter-core==4.2.1', 'Keras==2.1.6', 'keras-tqdm==2.0.1', 'lazy-object-proxy==1.2.2', 'llvmlite==0.15.0', 'locket==0.2.0', 'lxml==3.7.2', 'Markdown==2.6.11', 'MarkupSafe==0.23', 'matplotlib==2.0.0', 'mistune==0.7.3', 'mpmath==0.19', 'multipledispatch==0.4.9', 'murmurhash3==2.3.5', 'nbconvert==4.2.0', 'nbformat==4.2.0', 'networkx==1.11', 'nltk==3.2.2', 'nose==1.3.7', 'notebook==4.3.1', 'numba==0.30.1', 'numexpr==2.6.1', 'numpy==1.14.3', 'numpydoc==0.6.0', 'odo==0.5.0', 'openpyxl==2.4.1', 'pandas==0.20.2', 'partd==0.3.7', 'pathlib2==2.2.0', 'patsy==0.4.1', 'pep8==1.7.0', 'pexpect==4.2.1', 'pickleshare==0.7.4', 'Pillow==4.0.0', 'ply==3.9', 'prompt-toolkit==1.0.9', 'protobuf==3.5.2.post1', 'psutil==5.0.1', 'ptyprocess==0.5.1', 'py==1.4.32', 'pyasn1==0.1.9', 'pycosat==0.6.1', 'pycparser==2.17', 'pycrypto==2.6.1', 'pycurl==7.43.0', 'pyflakes==1.5.0', 'Pygments==2.1.3', 'pylint==1.6.4', 'pyOpenSSL==16.2.0', 'pyparsing==2.1.4', 'pytest==3.0.5', 'python-dateutil==2.6.0', 'pytz==2016.10', 'PyYAML==3.12', 'pyzmq==16.0.2', 'QtAwesome==0.4.3', 'qtconsole==4.2.1', 'QtPy==1.2.1', 'redis==2.10.5', 'requests==2.12.4', 'rope-py3k==0.9.4.post1', 'scandir==1.4', 'scikit-image==0.12.3', 'scikit-learn==0.18.1', 'scipy==0.18.1', 'seaborn==0.7.1', 'simplegeneric==0.8.1', 'singledispatch==3.4.0.3', 'six==1.10.0', 'snowballstemmer==1.2.1', 'sockjs-tornado==1.0.3', 'Sphinx==1.5.1', 'spyder==3.1.2', 'SQLAlchemy==1.1.5', 'statsmodels==0.6.1', 'sympy==1.0', 'tables==3.3.0', 'tensorboard==1.8.0', 'tensorflow==1.8.0', 'termcolor==1.1.0', 'terminado==0.6', 'toolz==0.8.2', 'tornado==4.4.2', 'tqdm==4.23.3', 'traitlets==4.3.1', 'unicodecsv==0.14.1', 'vertica-python==0.8.0', 'wcwidth==0.1.7', 'Werkzeug==0.11.15', 'widgetsnbextension==1.2.6', 'wrapt==1.10.8', 'xlrd==1.0.0', 'XlsxWriter==0.9.6', 'xlwt==1.2.0']

(This means that the modules doesn't exists in the machine you'r running the script on it doesn't necessary means that the package won't after packaging.

  • The following module(s) seems to be required under 'install_requires' but not in use in the code: set(['six', 'cloudpickle', 'Flask', 'cffi', 'ipython-genutils', 'absl-py', 'networkx', 'numexpr', 'tables', 'wrapt', 'Keras', 'termcolor', 'Jinja2', 'blaze', 'sympy', 'itsdangerous', 'xlwt', 'pathlib2', 'openpyxl', 'backports.shutil-get-terminal-size', 'alabaster', 'MarkupSafe', 'scipy', 'bleach', 'Pillow', 'decorator', 'contextlib2', 'jupyter-client', 'pyOpenSSL', 'scikit-learn', 'psutil', 'mpmath', 'greenlet', 'nose', 'h5py', 'cycler', 'QtAwesome', 'Werkzeug', 'anaconda-client', 'gevent', 'jsonschema', 'odo', 'bitarray', 'xlrd', 'click', 'multipledispatch', 'seaborn', 'murmurhash3', 'redis', 'ptyprocess', 'docutils', 'jedi', 'Pygments', 'qtconsole', 'chardet', 'cytoolz', 'matplotlib', 'ply', 'ipython', 'pickleshare', 'mistune', 'nbformat', 'boto', 'numpydoc', 'spyder', 'pyparsing', 'astropy', 'terminado', 'requests', 'llvmlite', 'pyasn1', 'lazy-object-proxy', 'HeapDict', 'dill', 'snowballstemmer', 'pycparser', 'toolz', 'tensorboard', 'jupyter-console', 'prompt-toolkit', 'astor', 'pexpect', 'backports-abc', 'bokeh', 'Flask-Cors', 'isort', 'pyzmq', 'SQLAlchemy', 'Sphinx', 'imagesize', 'widgetsnbextension', 'et-xmlfile', 'pylint', 'pytz', 'jupyter-core', 'tensorflow', 'python-dateutil', 'jdcal', 'Markdown', 'pycurl', 'keras-tqdm', 'QtPy', 'future', 'locket', 'statsmodels', 'sockjs-tornado', 'configobj', 'Cython', 'ipykernel', 'Babel', 'argcomplete', 'grpcio', 'wcwidth', 'numba', 'dask', 'singledispatch', 'lxml', 'partd', 'cryptography', 'rope-py3k', 'fastcache', 'patsy', 'html5lib', 'chest', 'pytest', 'nbconvert', 'Bottleneck', 'XlsxWriter', 'PyYAML', 'clyent', 'protobuf', 'datashape', 'tornado', 'scikit-image', 'ipywidgets', 'anaconda-navigator', 'notebook', 'colorama', 'traitlets', 'beautifulsoup4', 'gast', 'astroid', 'jupyter', 'pycrypto', 'pyflakes', 'simplegeneric', 'pycosat', 'vertica-python', 'pep8', 'unicodecsv', 'anaconda-project', 'idna', 'nltk', 'scandir'])
  • Alternatively, you can replace you required module list with the following: ['tqdm==4.23.3', 'numpy==1.14.3', 'py==1.4.32', 'pandas==0.20.2']