Skip to main content

Issue with installing python-axolotl or python-axolotl-curve25519 on Windows

It is peeve amazing how many hours get burnt while trying to resolve simple package dependency issues. I may be too dumb to proffer a lasting one-fits-all solution to all dependency issues, but I got this issue fixed in my own case.

Problem Description:
The python-axolotl library requires certain dependencies that are not properly managed when installing libraries via a command line's requirement.txt file.

I got real help by reading through this link below, but this page might be more helpful when it comes to detailed instructions.
Actual instructions: https://github.com/tgalal/python-axolotl

Typical errors might look like the following:

1. In this case, missing library(s). Libraries needed for compiling some python resources. Unfortunately, http://aka.ms/vcpython27 has been decommissioned because Python2x is EOL. You can still get the VcPython27 from an archive at https://web.archive.org/web/20210106040222/download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59FBF6D907B/VCForPython27.msi
error: command 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2

    ----------------------------------------
Command "C:\Users\Administrator\AppData\Local\Continuum\Anaconda2\envs\swdb\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\justink\\appdata\\local\\temp\\pip-yja6cx-build\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record c:\users\justink\appdata\local\temp\pip-f0cy1o-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in c:\users\justink\appdata\local\temp\pip-yja6cx-build\


2. In this case, there is a missing file in the package discussed above (VCForPython27.msi). Copy the file at this URL: https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
and paste it in C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\include\
curve/curve25519-donna.c(49) : fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory
  error: command 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\amd64\\cl.exe' failed with exit status 2 

Note: As a requirement, the authors of python-axolotl require that MinGW (plus GCC) and Zlib must be installed. The next instructions will guide you on How to get this done.

3. To download MinGW for windows(MinGW-get-setup.exe), I suggest this link
https://osdn.net/projects/mingw/releases/
This is just an installation manager for MinGW. After installation, the manager will provide different variants and we shall install the necessary variant.

4. Add MinGW to environment variables
e.g Add C:\MinGW\bin to environment variables

5. Create a new file named distutils.cfg, put this new file in the Lib/distutils folder of your python installation e.g C:\python27\Lib\distutils.
inside this file add these 2 lines and save:
[build]
compiler=mingw32

6. Open a new instance of the Command prompt and run this command, Remember what I said about variants? here it is...

mingw-get.exe install gcc
Note: due to some spaces in my Docker path variables, My system was unable to see the MinGW path so, I appended the MinGW to the beginning of the Path string. Another way is to open the CMD and navigate to the bin directory of MinGW.


7. download a version of Zlib, I suggest using this link
http://gnuwin32.sourceforge.net/packages/zlib.htm


Now you can resume any previous installation of python-module or libraries that were failing previously.

Examples of installs affected by these are:

https://github.com/PyWaves/PyWaves/issues/59
https://github.com/romanzaikin/BurpExtension-WhatsApp-Decryption-CheckPoint/issues/1
https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/211

Let me know if there are other things I might have left out, or perhaps one of the links is broken. It will help someone someday. There are quite a few other things I did while trying to resolve this issue, but I count them as insignificant, if your case seems a bit different, let me know, I could be of help.


If there is something not right with this article, please I would like to know. feel free to drop a comment, all kinds of comments are welcomed but the nice ones are well appreciated and no comment will be ignored.

Comments

Popular Articles

Is this a CSS Bug: setting Background and z-index for Pseudo selectors(::before & :: after)

Recently I was making some UI for a friend's project. We had this CSS button effect that works elsewhere but failed to work at the desired location. Upon troubleshooting, we discovered that if the parent element has a background defined, you can't control the z-index of the pseudo selection of any of its children. Wait for it, I have got some demo. TL;DR set background colour or image for a " DIV.parent ", create a " Div.child " inside the " DIV.parent ". use CSS to modify the " ::before" " element of the " Div.child " as follows; set position as absolute, content as an empty string, height:100% and width is best at 50% for example purposes, lastly, give it a background colour. You will observe that the " ::before" " element is overlaying the actual element's content. Try to adjust the z-index of the " ::before" ". You will also realize that the z-index works fine if we remove the backgroun...

Linux - How many network cards/interfaces do I have and what's their IP

 Yup! You have your Linux server or desktop installed, you have been enjoying this setup and suddenly you need to know how many network adapters are installed. You probably also want to know which of these adapters is connected to the internet, please follow through. First, you should run the command below on the terminal ip addr TL; DR: T here are 2 network adapters here,  “enp0s3” is my internet network adapter because it has an IP address from my internet gateway/router/MiFi. The IP address pattern gives this information.it begins with 192.x.x.x. Also "epn0s8" is the local network adapter which allows connections within an ethernet,  This output is quite verbose. Let’s dissect it in a bit. Firstly, we can observe items 1, 2 and 3. It is worth mentioning that item 1 is not an adapter, it is synonymous with the local network. Item 1 is labelled as “lo:”, this means that details in this section have to do with your localhost. Internal network setting of your system. This ...

Ubuntu: Unable to get IP for network interface / Using multiple network adapters

This is a very focused article on a similar issue which i encountered very recently. Problem: I recently installed Ubuntu Server 20.0 on a virtualBox. My intention was to use 2 network adapters as shown in the picture below. Host-Only Network NAT After setting up, I realised that i could not get IP address for the NAT adapter and it was always DOWN. Solution: Ubuntu20.0 comes with a different Newtork Configuration System compared to older ones like Ubuntu 14. The new Ubuntu uses netplan to handle network configurations. To solve this issue, you need to add specific information about every adapter into the netplan configuration file. The first adapter will always be configured by default. Follow through this article to learn how in 5 easy steps. 1. The picture below shows that my VM is already configured to use 2 network adapters. 2. Now i powered up the VM and check my network parameters. I powered the VM and ran the commands to check if my 2 network adapters we...