User Tools

Site Tools


python3
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


Previous revision
Next revision
python3 [2018/10/06 08:00] – [Debian based distros] dblume
Line 1: Line 1:
 +====== Python3 ======
  
 +If I want Python 3.7, I have to compile it myself.  Use "dnf" for RedHat based distros and "apt-get" for Debian.
 +
 +===== RedHat based distros =====
 +
 +<code bash>
 +sudo dnf install readline-devel  # or up-arrow won't navigate history
 +sudo dnf install sqlite-devel openssl-devel bzip2-devel
 +sudo dnf install xz-devel
 +</code>
 +
 +Then on Fedora and CentOS...
 +
 +<code bash>
 +wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
 +tar -xvf Python-3.7.0.tgz
 +cd Python-3.7.0/
 +./configure --prefix=/usr/local/bin/python3.7 --enable-optimizations
 +make
 +sudo make install
 +# sudo ln -s /usr/local/bin/python3.7/bin/python3 /usr/bin/python3
 +</code>
 +
 +On my dev system at work, I seem to have configured a prefix like /opt/python3. Then when CentOS updates itself, it changes a symbolic link in /usr/bin/python3
 +
 +    sudo rm /usr/bin/python3 && sudo ln -s /opt/python3/bin/python3 /usr/bin/python3
 +
 +For **OS X**, brew upgrading httpie seems to upgrade to the latest Python 3, so I didn't have to do stuff.
 +
 +===== Debian based distros (Start) =====
 +
 +For Debian (eg., Rasbian) try [[http://www.unixmen.com/howto-install-python-3-x-in-ubuntu-debian-fedora-centos/|the following]] (on raspberry pi libssl-dev isn't available):
 +
 +<code bash>
 +sudo apt-get install build-essential libncursesw5-dev libreadline-dev libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev libffi-dev
 +</code>
 +
 +==== (Aside) OpenSSL 1.0.1 issue in Raspbian ====
 +
 +On Raspbian Jessie the make command (below) may have output that looks like this:
 +
 +<code>
 +The necessary bits to build these optional modules were not found:
 +_bz2                  _lzma                 _ssl
 +</code>
 +
 +On Raspbian, the pip module may not work because it relies on the ssl module.
 +
 +<code>
 +pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
 +</code>
 +
 +Python's setup.py explains:
 +
 +> Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
 +
 +If you check the version of ssh:
 +
 +<code>
 +$ openssl version
 +OpenSSL 1.0.1t  3 May 2016
 +</code>
 +
 +That OpenSSL is too old. So you may have to [[https://raspberrypi.stackexchange.com/questions/66782/how-to-install-openssl-1-0-2-on-raspberry-pi3/67045|make your own OpenSSL library]].
 +
 +<code bash>
 +# Add the backport apt source.
 +echo "deb-src http://httpredir.debian.org/debian jessie-backports main contrib non-free" | \
 +      sudo tee /etc/apt/sources.list.d/jessie-backports.list
 +sudo apt update
 +
 +# Get the openssl source
 +apt-get source openssl/jessie-backports
 +
 +# Make and install it.
 +cd openssl-1.0.2k/
 +./config --prefix=/usr
 +make
 +make test
 +sudo make install
 +</code>
 +
 +**Update**: The following apt-cache policy command showed the old libssl was still installed. It's probably bad, but I [[https://my-take-on.tk/2018/09/10/installing-latest-python-3x-and-pip-on-any-debian-based-system/|installed the new one with apt install -t jessie-backports]].
 +
 +<code>
 +sudo apt-cache policy libssl-dev
 +</code>
 +
 +===== Debian based distros (Continued) =====
 +
 +Then, back to Python3, on Raspbian, I put it in the default location, /usr/local:
 +
 +<code bash>
 +screen  # Because using optimizations will take hours
 +cd Python-3.7.0/
 +./configure --enable-optimizations
 +make -j4
 +sudo make install
 +[[ $TERM != "screen" ]] || exit  # exit if in screen session
 +</code>
 +
 +===== Modules =====
 +
 +Sometimes I have trouble with pip3 (ImportError: cannot import name 'main' from 'pip'), so prefer to use "python 3 -m pip" instead.
 +
 +<code bash>
 +sudo -H python3 -m pip install --upgrade pip
 +sudo -H python3 -m pip install requests
 +sudo -H python3 -m pip install numpy
 +sudo -H python3 -m pip install matplotlib
 +python3 -m pip install --user --upgrade httpie
 +</code>
 +
 +===== Weird hack for impyla =====
 +
 +Refers to https://stackoverflow.com/questions/43918993/python-buildpack-fatal-error-sasl-sasl-h-no-such-file-or-directory
 +
 +<code bash>
 +sudo python3 -m pip install --no-deps impyla
 +sudo python3 -m pip install --no-deps git+https://github.com/snowch/thrift_sasl
 +# sudo python3 -m pip install thriftpy
 +</code>
python3.txt · Last modified: 2023/04/14 20:37 by dblume