Shipping command line programs with a python package
I already know this inherently sounds like a bad idea, but I'd love some genuine, constructive technical advice on the following scenario.

I have a python package that is used by others at work, and one of the features I need to add is the ability to upload binary files (\~1GB) from local to a cloud object storage, in this case Azure Data Lake.

The Azure Data Lake python client does have the ability to upload data, but it is significantly slower than their recommended command line bulk copy tool AzCopy.

**Can I get feedback on this approach:**

\-pip install the python package

\-the python package already has a command line entry point so the user would type something like

    &lt;package_name&gt; setup externals

Which would then run a setup script which would install azcopy to the users $HOME path and create a symlink to their PATH for the binary to run.

\-Then python would use it via subprocess.

**For me the negatives I see are:**

\-Having to write handling code for the setup script to fail gracefully.

\-Possibly having to host the already installed binaries on a fileshare somewhere so URL changes and version changes don't break the installer

\-Having an extra step if someone else clones the repo, pip installs the requirements, they have one more step before they can recreate.

**Positives are:**

\-AzCopy is way faster than the python sdk and doesn't have to upload objects one at a time.

\-I can extend this to use RClone eventually to make it cloud storage agnostic, and have it work with S3 as well

&amp;#x200B;

Has anyone ever done anything like this? Am I being oblivious to any major issues here?