licenses | ||
src | ||
.gitignore | ||
LICENSE-AGPL | ||
README.md | ||
requirements-dev.txt | ||
requirements.txt | ||
tasteful-python |
Tasteful Python
Python suited to my taste.
Configuration files, code snippets, etc.
Install
Install thusly.
Using Debian Bookworm (stable/12) as a base.
Dependencies
Dependencies that may be needed:
sudo apt install git python3-pip python3-virtualenv
Python
Get code and set up Python, suit to taste, such as:
git clone https://spacecruft.org/deepcrayon/tasteful-python
cd tasteful-python
virtualenv -p python3 env
source env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Run
Thusly:
./tasteful-python
Usage
Help:
./tasteful-python -h
Example
Such as:
./tasteful-python foo
{"snark": "foo"}
devpi PyPI Caching Server
Set up a devpi PyPI (pip) caching server thusly:
sudo apt install python3-pip python3-virtualenv --no-install-recommends
mkdir -p ~/devel/devpi
cd ~/devel/devpi
virtualenv env
source env/bin/activate
pip install -U setuptools wheel pip
pip install devpi-server devpi-web
sudo mkdir -p /srv/devpi
sudo chown jebba:jebba /srv/devpi
devpi-init \
--serverdir /srv/devpi
devpi-gen-config \
--host=0.0.0.0 \
--port 4040 \
--serverdir /srv/devpi \
--absolute-urls
# Don't use nginx (?)
#sudo apt install nginx
#sudo cp ~jebba/devel/devpi/gen-config/nginx-devpi.conf /etc/nginx/sites-available/
#cd /etc/nginx/sites-enabled
#sudo ln -s ../sites-available/nginx-devpi.conf .
# meh supervisor, I guess
sudo apt install supervisor
sudo cp ~jebba/devel/devpi/gen-config/supervisor-devpi.conf /etc/supervisor/conf.d/
crontab -e
@reboot /usr/local/sbin/supervisord -c /home/jebba/etc/supervisor-devpi.conf
supervisord -c gen-config/supervisord.conf
sudo reboot
cd ~/devel/devpi
source env/bin/activate
devpi use http://192.168.109.71:4040
devpi login root --password ''
devpi user -m root password=FOO
devpi user -l
devpi logoff
devpi user -c jebba password=BAR email=foo@bar
devpi login jebba --password=BAR
devpi index -c dev bases=root/pypi
devpi use jebba/dev
devpi install pytest
Open up firewall port 4040/tcp
.
Set up the PyPI clients thusly substituting in the proper server IP:
mkdir -p ~/.config/pip
cat > ~/.config/pip/pip.conf <<EOF
[global]
trusted-host = 192.168.1.100
index-url = http://192.168.1.100:4040/root/pypi/+simple/
[search]
index = http://192.168.1.100:4040/root/pypi/
EOF
pyenv
If different, typically older, versions of Python are needed, pyenv works well for this.
Set it up on a system thusly:
mkdir -p ~/devel/pyenv
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl liblzma-dev \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev \
python3-virtualenv python3-pip
curl https://pyenv.run | bash
If you want it to work every time the user logs in, add this to
~/.bashrc
.
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
If you only want pyenv sometimes, copy the above lines to a file
(e.g. ~/bin/deepcrayon-pyenv), the source the lines instead of running the
file, ala source ~/bin/deepcrayon-pyenv
.
To see versions of Python that can be installed:
pyenv install --list | sort -V
Perhaps install a bunch of versions, such as:
pyenv install 3.11.5
pyenv install 3.10
pyenv install 3.9
pyenv install 3.8
pyenv install 3.7
pyenv install 3.6
pyenv install 3.5
pyenv install 3.12.0rc1
pyenv install 3.12-dev
pyenv install 3.13-dev
Use pyenv to set a particular version in a virtualenv:
mkdir -p foodir
cd foodir/
pyenv local 3.11.5
virtualenv -p 3.11.5 env
source env/bin/activate
python --version
pip install --upgrade pip setuptools wheel
pip install fooapp
Development
To "develop", install the requirements:
pip install -r requirements-dev.txt
Then run black on the Python files for nice formatting:
black tasteful-python*
Status
Alpha, under development.
Upstream
Python
Python Software Foundation
Disclaimer
I am not a programmer, I'm learning Python.
Copyright
Unofficial project, not related to the Python Software Foundation.
Upstream sources under their respective copyrights.
License
Source Code: AGPLv3+.
Copyright © 2023, Jeff Moe.