pythonpython-3.xpippysam

Why does installing pysam python package fail?


I'm new to python and running the command:

pip install pysam

Which results in:

Collecting pysam
  Using cached https://files.pythonhosted.org/packages/25/7e/098753acbdac54ace0c6dc1f8a74b54c8028ab73fb027f6a4215487d1fea/pysam-0.15.4.tar.gz
    ERROR: Command errored out with exit status 1:
     command: 'c:\path\programs\python\python38\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\path\\Local\\Temp\\pip-install-qzuue1yz\\pysam\\setup.py'"'"'; __file__='"'"'C:\\path\\Temp\\pip-install-qzuue1yz\\pysam\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
    Complete output (23 lines):
    # pysam: cython is available - using cythonize if necessary
    # pysam: htslib mode is shared
    # pysam: HTSLIB_CONFIGURE_OPTIONS=None
    '.' is not recognized as an internal or external command,
    operable program or batch file.
    '.' is not recognized as an internal or external command,
    operable program or batch file.
      File "<string>", line 1, in <module>
      File "C:\path\Local\Temp\pip-install-qzuue1yz\pysam\setup.py", line 241, in <module>
        htslib_make_options = run_make_print_config()
      File "C:\path\\Local\Temp\pip-install-qzuue1yz\pysam\setup.py", line 68, in run_make_print_config
        stdout = subprocess.check_output(["make", "-s", "print-config"])
      File "c:\path\programs\python\python38\lib\subprocess.py", line 411, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "c:\path\programs\python\python38\lib\subprocess.py", line 489, in run
      File "c:\path\programs\python\python38\lib\subprocess.py", line 854, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "c:\path\programs\python\python38\lib\subprocess.py", line 1307, in _execute_child
        hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
    FileNotFoundError: [WinError 2] The system cannot find the file specified
    # pysam: htslib configure options: None
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

What is the problem here?

Originally I got an error about cython not being installed, so i ran pip install cython and that was able to run that without issue.


Solution

  • There are many binary wheels at PyPI but only for Linux and MacOS X. The package at bioconda is also compiled only for Linux and OS X.

    When you try to install pysam at Windows pip downloads the source distribution pysam-0.15.4.tar.gz, unpacks it and runs setup.y

    pysam's setup.py configures library htslib by running script htslib/configure. This is a shell script, it cannot be run in Windows without a Unix emulation layer. Hence the error.

    Bottom line: like many pieces of software related to genetics (I have some experience with software written in Python and Java) pysam seems to be usable only on Unix, preferably Linux or OS X.