From http://jamie.curle.io/blog/my-first-experience-adding-package-pypi/ : python setup.py upload running upload error: no dist file created in earlier command I thought I was going mad because I could see the dist file, it was right there in all of [its] tar and gzipped glory. “earlier command” is misleading, as the dist file must be created by the same command line that calls upload (for now at least; see #12944). The error message should be clearer, and if the doc doesn’t explain how this works, it should be improved too.
Attaching a patch with a (hopefully) more useful error message. I didn't find a good place to add this information in the "Distributing Python Modules" section of the docs, but let me know if you had a place in mind.
For improving the message, I am hesitating between adding to the existing message (hoping to help search engines find their way to improved docs): «No dist file created in earlier command (e.g. setup.py sdist upload)» and rewriting it entirely: «Must create and upload dist files in one command (e.g. setup.py sdist upload)»
I think the error message you suggested is better than the one in the current patch. I've added a new patch with your improved message. I haven't submitted or updated a patch since the migration to GitHub. I can open a PR over on GitHub if that would make it easier for you.