Archive
HowTo: Install Python, PIP and cx_Oracle on MSYS2 / Windows
Here’s how to install Python, PIP package installer and cx_Oracle extension module on MSYS2:
$ pacman -S python
warning: python-3.8.3-1 is up to date — reinstalling
resolving dependencies…
looking for conflicting packages…Packages (1) python-3.8.3-1
Total Installed Size: 108.66 MiB
Net Upgrade Size: 0.00 MiB:: Proceed with installation? [Y/n] y
…
$ pacman -S cx_Oracle
error: target not found: cx_Oracle
$ pip install cx_Oracle
bash: pip: command not found
$ pacman -S python-pip
resolving dependencies…
looking for conflicting packages…Packages (2) python-setuptools-47.1.1-1 python-pip-20.1.1-1
Total Download Size: 2.22 MiB
Total Installed Size: 10.91 MiB:: Proceed with installation? [Y/n] y
:: Retrieving packages…
…
$ pip install cx_Oracle
Collecting cx_Oracle
Downloading cx_Oracle-8.0.0.tar.gz (325 kB)
|████████████████████████████████| 325 kB 693 kB/s
Using legacy setup.py install for cx-Oracle, since package ‘wheel’ is not installed.
Installing collected packages: cx-Oracle
Running setup.py install for cx-Oracle … error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3.exe -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘"’"’/tmp/pip-install-wqtzv2rv/cx-Oracle/setup.py’"’"’; __file__=’"’"’/tmp/pip-install-wqtzv2rv/cx-Oracle/setup.py’"’"’;f=getattr(tokenize, ‘"’"’open’"’"’, open)(__file__);code=f.read().replace(‘"’"’\r\n’"’"’, ‘"’"’\n’"’"’);f.close();exec(compile(code, __file__, ‘"’"’exec’"’"’))’ install –record /tmp/pip-record-mui2mjs9/install-record.txt –single-version-externally-managed –compile –install-headers /usr/include/python3.8/cx-Oracle
cwd: /tmp/pip-install-wqtzv2rv/cx-Oracle/
Complete output (17 lines):
running install
running build
running build_ext
building ‘cx_Oracle’ extension
creating build
creating build/temp.msys-3.1.5-x86_64-3.8
creating build/temp.msys-3.1.5-x86_64-3.8/src
creating build/temp.msys-3.1.5-x86_64-3.8/odpi
creating build/temp.msys-3.1.5-x86_64-3.8/odpi/src
x86_64-pc-msys-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe -march=x86-64 -mtune=generic -O2 -pipe -DCXO_BUILD_VERSION=8.0.0 -Iodpi/include -Iodpi/src -I/usr/include/python3.8 -c src/cxoApiType.c -o build/temp.msys-3.1.5-x86_64-3.8/src/cxoApiType.o
In file included from src/cxoModule.h:14,
from src/cxoApiType.c:11:
/usr/include/python3.8/Python.h:44:10: fatal error: crypt.h: No such file or directory
44 | #include <crypt.h>
| ^~~~~~~~~
compilation terminated.
error: command ‘x86_64-pc-msys-gcc’ failed with exit status 1
—————————————-
ERROR: Command errored out with exit status 1: /usr/bin/python3.exe -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘"’"’/tmp/pip-install-wqtzv2rv/cx-Oracle/setup.py’"’"’; __file__=’"’"’/tmp/pip-install-wqtzv2rv/cx-Oracle/setup.py’"’"’;f=getattr(tokenize, ‘"’"’open’"’"’, open)(__file__);code=f.read().replace(‘"’"’\r\n’"’"’, ‘"’"’\n’"’"’);f.close();exec(compile(code, __file__, ‘"’"’exec’"’"’))’ install –record /tmp/pip-record-mui2mjs9/install-record.txt –single-version-externally-managed –compile –install-headers /usr/include/python3.8/cx-Oracle Check the logs for full command output.
Found a solution here for other Linuxes, mentioning
apt install python-dev clang libcrypt-dev
Via MSYS2 package manager (pacman), libcrypt and libcrypt-devel seem to be available. The second one should fetch the first one if needed, together with header files for development.
$ pacman -S libcrypt-devel
resolving dependencies…
looking for conflicting packages…Packages (1) libcrypt-devel-2.1-2
Total Download Size: 0.04 MiB
Total Installed Size: 0.04 MiB:: Proceed with installation? [Y/n] y
…
Now we can install cx_Oracle succesfully:
$ pip install cx_Oracle
Collecting cx_Oracle
Using cached cx_Oracle-8.0.0.tar.gz (325 kB)
Using legacy setup.py install for cx-Oracle, since package ‘wheel’ is not installed.
Installing collected packages: cx-Oracle
Running setup.py install for cx-Oracle … done
Successfully installed cx-Oracle-8.0.0