The top directory should have a requirements.txt file for package managers. Ideally, it should be very small. Right now, pycryptodome is only used for bytes_to_long and long_to_bytes, which can be implemented locally very easily. sagemath also makes sympy and maybe even z3 redundant.