I had various problems installing Python packaged on z/OS.
Firstly the Python file system was read only – that’s ok. I can try to install in a virtual environment. This also had it’s problems!
The main problem was, I had the HOME environment variable pointing to a directory which my userid did not have write access to – /u/. When I changed it to my working directory /u/tmp/pymi2, it worked with no problems.
I’ll document in the blog the debugging I did.
Preparation
I FTP’d the wheels package in binary from my Linux machine, into /tmp on z/OS.
I switched to my virtual environment using
. env/bin/activate
This gave a command line like
(env) COLIN:/u/tmp/pymqi2:
I used the command
python3 -m pip install /tmp/wheel-0.37.1-py2.py3-none-any.whl /tmp/wheel-0.37.1-py2.py3-none-any.whl –no-cache-dirBut this gave
Installing collected packages: wheel
ERROR: Could not install packages due to an EnvironmentError: [Errno 111] EDC5111I Permission denied.: ‘/u/.local’
Using the –verbose argument
python3 -m pip –verbose install /tmp/wheel-0.37.1-py2.py3-none-any.whl /tmp/wheel-0.37.1-py2.py3-none-any.whl &x45;&x45;no-cache-dirgave more information, but not enough to resolve the problem.
Using
python3 -m pip &x45;&x45;verbose install..
gave much more information including
config vars:
{‘abiflags’: ”,
‘base’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘dist_fullname’: ‘UNKNOWN-0.0.0’,
‘dist_name’: ‘UNKNOWN’,
‘dist_version’: ‘0.0.0’,
‘exec_prefix’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘platbase’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘prefix’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘py_version’: ‘3.8.5’,
‘py_version_nodot’: ’38’,
‘py_version_short’: ‘3.8’,
‘sys_exec_prefix’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘sys_prefix’: ‘/usr/lpp/IBM/cyp/v3r8/pyz’,
‘userbase’: ‘/u/.local’,
‘usersite’: ‘./lib/python3.8/site-packages’}
where I could see where the /u/.local came from.
You can change the userbase (see here) using
export PYTHONUSERBASE=.
and the product installed. When I fixed my HOME environment variable to point to my working directory this also worked!
What is installed?
Using the command:
python3 -m pip --verbose listThis gave
Package Version Location Installer ------------ ------- ---------------------------------------------------------- --------- cffi 1.14.0 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages cryptography 2.8 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages ebcdic 1.1.1 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages pip numpy 1.18.2 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages pip pip 20.2.1 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages pip pycparser 2.20 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages pip setuptools 47.1.0 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages pip six 1.15.0 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages wheel 0.37.1 /u/tmp/pymqi2/lib/python3.8/site-packages pip zos-util 1.0.0 /Z24C/usr/lpp/IBM/cyp/v3r8/pyz/lib/python3.8/site-packages
so we can see the wheel package was installed in my user directory.
Without the --verbose, just package and version were displayed, no location or installer.
Uninstall it
I used
python3 -m pip –verbose uninstall wheelto uninstall it