Pycrypto on Alpine

Posted

#python#linux#alpine#pycrypto

This is just a quick post for weary travelers out there trying to find answers.

On Alpine Linux, Pycrypto may not compile correctly. This is because Alpine uses the musl C library as opposed to the C standard library. When trying to compile, you may end up with something like this:

checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/tmp/pycrypto-2.6.1':
configure: error: C compiler cannot create executables
See `config.log' for more details

Or, if building from pip:

    running build_configure
    checking for gcc... gcc
    checking whether the C compiler works... no
    configure: error: in `/tmp/pip-build-_wxuipnm/pycrypto':
    configure: error: C compiler cannot create executables
    See `config.log' for more details
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-_wxuipnm/pycrypto/setup.py", line 456, in <module>
        core.setup(**kw)
      File "/usr/local/lib/python3.5/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/local/lib/python3.5/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/local/lib/python3.5/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/local/lib/python3.5/distutils/command/install.py", line 539, in run
        self.run_command('build')
      File "/usr/local/lib/python3.5/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/local/lib/python3.5/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/local/lib/python3.5/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-_wxuipnm/pycrypto/setup.py", line 251, in run
        self.run_command(cmd_name)
      File "/usr/local/lib/python3.5/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-_wxuipnm/pycrypto/setup.py", line 278, in run
        raise RuntimeError("autoconf error")
    RuntimeError: autoconf error

Simple solution: Ensure all your dependencies are correctly installed!

apk add openssl libc-dev python-dev gcc

UPDATE (9/9/16): Added a couple overlooked dependencies thanks to a kind commentator.