The requirements.txt file seems unnecessarily bloated. I've gone through the list and I've found multiple libraries that are never imported in the code and don't seem to be at all required for running the system. Possibly a lot of them are either old and redundant or possible contaminations from developers environments.
Suggested solution
My suggestion would be to strip out all the bloatware and also possibly create a requirements-dev.txt file. Of course that could bring up possibilites of cross-contamination again once updating the requirements.txt with any more modules, but it's still not that difficult to handle.
Details
Here are my findings about the unimported modules:
ipython : Utterly unnecessary unless in a development environment where it can be rather useful.
gnureadline : possibly there just for devs on other platforms than Linux that do not come shipped with GNU redline installed. Needs not be in porduction.
pytz : brings the Olson tz database into Python. Never used and probably unnecessary.
texttable : Python module for creating simple ASCII tables. Not sure about the point of
pyOpenSSL : OpenSSL library. Not used anywhere.
pycparser : parser for the C language, written in pure Python. Never used.
pyasn1 : Generic implementation of ASN.1 types (X.208). Never imported anywhere.
idna : Internationalized Domain Names in Applications. Never imported, although useful in a way. We should consider utilising it.
ipaddress : Port of the 3.3+ ipaddress module to 2.6, 2.7, 3.2. Can't find any trace of it's usage.
diff-match-patch: in requirements.txt but also copied into codebase?
enum34 : Python 3.4 Enum backport. No. Just no. Just convert all to Python 3.4+
defusedxml : XML bomb protection for Python stdlib modules. Possibly replaced by lxml
openpyxl : module for working with spreadsheets. pyexcel is used, not openpyxl, although openpyxl is a more popular choice.
jdcal : required for openpyxl, so pretty onnecessary
et-xmlfile : low memory library for creating large XML files. Originally written for openpyxl
odfpy : Yet another xml library, this one focusing on OpenDocument. Never imported
eight : Python 2 -> 3 porting helper library. Never used and should never be used. A straight up conversion from 2 -> 3 is way better.
Also here are DB requirements. Should they be there or should they be chosen alongside a DB?
MySQL-python -----> Why are there two modules for MySQL?
Problem
The requirements.txt file seems unnecessarily bloated. I've gone through the list and I've found multiple libraries that are never imported in the code and don't seem to be at all required for running the system. Possibly a lot of them are either old and redundant or possible contaminations from developers environments.
Suggested solution
My suggestion would be to strip out all the bloatware and also possibly create a requirements-dev.txt file. Of course that could bring up possibilites of cross-contamination again once updating the requirements.txt with any more modules, but it's still not that difficult to handle.
Details
Here are my findings about the unimported modules:
Also here are DB requirements. Should they be there or should they be chosen alongside a DB?
Anyone care to object or explain the bloatware?