From 09af6fb721faf49294aa8f7658d24c344a6ae33c Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Wed, 27 Mar 2013 12:27:17 -0400 Subject: [PATCH] BUG: Avoids install errors caused by lack of pandoc binary. The pyandoc module throws an OSError of: "No such file or directory", when the underlying pandoc binary does not exist. This error has caused confusion for numerous people during pip installation. pandoc is only needed on upload to PyPI to convert to ReST. So, instead of doing a try/except on the `import pandoc` for all cases, now checking whether or not 'upload' was invoked when calling setup.py, so that only maintainers have to worry about installation of pandoc. By only exercising the pandoc logic when --- setup.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 30980d75..a58bbb6b 100644 --- a/setup.py +++ b/setup.py @@ -13,6 +13,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +import sys from setuptools import setup, find_packages @@ -22,15 +23,19 @@ README_MARKDOWN = None with open('README.md') as markdown_source: README_MARKDOWN = markdown_source.read() -try: - import pandoc - pandoc.core.PANDOC_PATH = 'pandoc' +if 'upload' in sys.argv: # Converts the README.md file to ReST, since PyPI uses ReST for formatting, # This allows to have one canonical README file, being the README.md + # The conversion only needs to be done on upload. + # Otherwise, the pandoc import and errors that are thrown when + # pandoc are both overhead and a source of confusion for general + # usage/installation. + import pandoc + pandoc.core.PANDOC_PATH = 'pandoc' doc = pandoc.Document() doc.markdown = README_MARKDOWN LONG_DESCRIPTION = doc.rst -except ImportError: +else: # If pandoc isn't installed, e.g. when downloading from pip, # just use the regular README. LONG_DESCRIPTION = README_MARKDOWN