pinstall


Namepinstall JSON
Version 1.18 PyPI version JSON
download
home_pageNone
SummaryInstaller Tool for Python Programs
upload_time2024-10-01 22:22:54
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPLv3
keywords venv virtualenv systemd service pip pipx pyproject.toml
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## PINSTALL - Installer/Utility Tool for Python Programs
[![PyPi](https://img.shields.io/pypi/v/pinstall)](https://pypi.org/project/pinstall/)
[![AUR](https://img.shields.io/aur/version/pinstall)](https://aur.archlinux.org/packages/pinstall/)

This is a simple "swiss-army" tool to facilitate installing Python
programs on Linux systems. The following commands are presently
implemented, each as an independent [plugin](pinstall/commands).

The latest documentation and code is available at
https://github.com/bulletmark/pinstall.

## Usage

Type `pinstall` or `pinstall -h` to view the usage summary:

```
usage: pinstall [-h]
                   {project,pyenv,service,status,uv,uvenv,venv,version} ...

Installer/utility tool for Python programs.

options:
  -h, --help            show this help message and exit

Commands:
  {project,pyenv,service,status,uv,uvenv,venv,version}
    project             Creates a bare-bones Python pyproject.toml file to
                        facilitate installation by pipx or pip.
    pyenv               Updates all pyenv python versions and creates links to
                        current major versions.
    service             Installs systemd services and corresponding timers.
    status              Reports systemctl status of services and timers
                        installed from the current directory.
    uv                  Installs or updates the uv tool.
    uvenv               Creates a Python virtual environment using uv.
    venv                Creates a Python virtual environment using venv + pip.
    version             Reports this program's version.
```

Type `pinstall <command> -h` to see specific help/usage for any
individual command:

### Command `project`

```
usage: pinstall project [-h] [-f REQUIREMENTS_FILE] [-o] [app]

Creates a bare-bones Python pyproject.toml file to facilitate
installation by pipx or pip.

Useful when you have an app.py and it's special package dependencies
specified in requirements.txt and want to install that app.py (as
command "app") using pipx or pip but don't have a pyproject.toml (or old
style setup.py). Run this command in the same directory as the files and
it will create a bare-bones ./pyproject.toml file. This will allow you
to install the app using `pipx install .`, or `pip install .` commands.

Will also parse PEP 723 dependencies from a script tag in the Python
file.

Your app.py must have a main() function to be called when the app is
run.

positional arguments:
  app                   app[.py] or app/ package to create pyproject.toml for.
                        If not specified then looks for a single .py file in
                        current directory.

options:
  -h, --help            show this help message and exit
  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE
                        default="requirements.txt"
  -o, --overwrite       overwrite existing pyproject.toml file
```

### Command `pyenv`

```
usage: pinstall pyenv [-h] [-l] [-p] [-m]

Updates all pyenv python versions and creates links to current major versions.

options:
  -h, --help            show this help message and exit
  -l, --list            just list latest versions, do not update or purge
  -p, --purge           just purge old versions if later is installed
  -m, --remove-major-symlinks
                        remove all symlinks to major versions
```

### Command `service`

```
usage: pinstall service [-h] [-u] [-s] [-e] [-r] [units ...]

Installs systemd services and corresponding timers.

Substitutes template strings within each *.service file in the current
directory (and in any corresponding .timer file); installs the
substituted file[s] to the appropriate systemd system (or user) unit
configuration directory; then enables and starts the service (or the
timer).

Template strings can be any of the following:

    HOME      : Home directory path of the invoking user
    USER      : User name of invoking user
    USERID    : Numeric user ID of the invoking user
    GROUPID   : Numeric group ID of the invoking user
    WORKDIR   : Directory path of the service file
    PROGDIR   : Same as WORKDIR
    BASENAME  : Directory name of the service file
    PROG      : Stem name of the service file (i.e. "name" in "name.service")
    PROGTITLE : Upper case PROG

Template strings are specified in .service and .timer files by wrapping
them in hash symbols. Installed copies of these source files have all
instances of template strings replaced by their value. E.g. #HOME#
gets replaced by the user's home directory path.

positional arguments:
  units            systemd service file[s]

options:
  -h, --help       show this help message and exit
  -u, --user       install as user service
  -s, --no-start   do not start service[s]
  -e, --no-enable  do not enable service[s]
  -r, --remove     just uninstall and remove service[s]
```

### Command `status`

```
usage: pinstall status [-h] [-u] [units ...]

Reports systemctl status of services and timers installed from the
current directory.

positional arguments:
  units       systemd service file[s]

options:
  -h, --help  show this help message and exit
  -u, --user  report for user service
```

### Command `uv`

```
usage: pinstall uv [-h] [-r] [-p PREFIX] [-V]

Installs or updates the uv tool.

Read about uv at https://github.com/astral-sh/uv.
If run this as root/sudo, it installs to /usr/bin/uv otherwise it
installs as your user to $HOME/.local/bin/uv. Requires curl to be
installed.

options:
  -h, --help            show this help message and exit
  -r, --remove          just remove any existing uv executable
  -p PREFIX, --prefix PREFIX
                        install to /bin under given system prefix path
  -V, --version         just report version of installed uv executable
```

### Command `uvenv`

```
usage: pinstall uvenv [-h] [-d DIR] [-p PYTHON] [-u UV]
                         [-f REQUIREMENTS_FILE] [-r] [-i [PACKAGE ...]] [-R]
                         [args ...]

Creates a Python virtual environment using uv.

Runs `uv venv` to create a `.venv/` (optionally for the specified Python
name, or path) then installs all package dependencies from 1)
requirements.txt if present, or 2) from pyproject.toml if present.

[uv](https://github.com/astral-sh/uv) is a new Python installation tool
which is more efficient and **much** faster than `python -m venv` and
`pip`. You can use the `uvenv` command pretty much in place of `venv`
and it will work similarly. At the moment the `uvenv` command is
experimental but if the `uv` tool succeeds, `uvenv` will likely replace
`venv`.

positional arguments:
  args                  optional arguments to `uv venv` command(add by
                        starting with "--"). See options in `uv venv -h`

options:
  -h, --help            show this help message and exit
  -d DIR, --dir DIR     directory name to create, default=".venv"
  -p PYTHON, --python PYTHON
                        python executable (or venv dir), default="python3"
  -u UV, --uv UV        path to uv executable, default="uv"
  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE
                        default="requirements.txt"
  -r, --no-require      don't pip install requirements/dependencies
  -i [PACKAGE ...], --install [PACKAGE ...]
                        also install (1 or more) given packages
  -R, --remove          just remove any existing venv and finish
```

### Command `venv`

```
usage: pinstall venv [-h] [-d DIR] [-p PYTHON] [-f REQUIREMENTS_FILE] [-r]
                        [-u] [-i [PACKAGE ...]] [-w] [-W] [-R] [-v]
                        [args ...]

Creates a Python virtual environment using venv + pip.

Runs `python -m venv` to create a `.venv/` (optionally for the specified
Python name, or path); adds a .gitignore to it to be automatically
ignored by git; upgrades the venv with the latest pip + setuptools +
wheel; then installs all package dependencies from 1) requirements.txt
if present, or 2) from pyproject.toml if present.

positional arguments:
  args                  optional arguments to python -m venv (add by starting
                        with "--"). See options in `python -m venv -h`

options:
  -h, --help            show this help message and exit
  -d DIR, --dir DIR     directory name to create, default=".venv"
  -p PYTHON, --python PYTHON
                        python executable (or venv dir), default="python3"
  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE
                        default="requirements.txt"
  -r, --no-require      don't pip install requirements/dependencies
  -u, --no-upgrade      don't upgrade pip/setuptools in venv
  -i [PACKAGE ...], --install [PACKAGE ...]
                        also install (1 or more) given packages
  -w, --without-pip     don't install pip or requirements in venv (i.e. pass
                        --without-pip to python -m venv)
  -W, --no-wheel        don't install wheel in venv
  -R, --remove          just remove any existing venv and finish
  -v, --verbose         verbose pip install (can add multiple times to
                        increase verbosity)
```

### Command `version`

```
usage: pinstall version [-h]

Reports this program's version.

options:
  -h, --help  show this help message and exit
```

## Management of pyenv versions

[Pyenv](https://github.com/pyenv/pyenv) gives you the handy ability to
install multiple versions of Python. However, there is no easy/quick way
to update all those versions unless you update each manually. So
pinstall offers a `pyenv` command to do this. Just run `pinstall pyenv`
which will check your versions and update any which have a newer minor
version. E.g. if you have 3.7.3 installed and 3.7.4 is available then
`pinstall pyenv` will invoke `pyenv` to install 3.7.4. You can also run
`pinstall pyenv -p` to automatically purge any older/superceded
versions, i.e. to remove 3.7.3 in this example.

`pinstall pyenv` also does something else each time you run it. It
creates or updates major version links. E.g. after installing 3.7.4 as
in the above example, `pinstall pyenv` will also create a link in your
`pyenv` versions directory `3.7 -> 3.7.4`. This allows you to create a
virtual environment in either of two ways:

1. `pinstall venv -p ~/.pyenv/versions/3.7.4/bin/python` will create a
   virtual environment using 3.7.4 permanently, or:

2. `pinstall venv -p ~/.pyenv/versions/3.7/bin/python` will create a
   virtual environment using the link 3.7 which initially points to
   3.7.4 but will automatically use 3.7.5 when/if the minor version gets
   updated (i.e. after you have done a later `pinstall pyenv` to find
   and install a new 3.7.5). Note that python minor (i.e. maintenance)
   version updates are [always backwards
   compatible](https://devguide.python.org/developer-workflow/development-cycle/index.html#maintenance-branches).

## Experimental command `uvenv`

[uv](https://github.com/astral-sh/uv) is a new Python installation tool
which is more efficient and **much** faster than `python -m venv` and
`pip`. You can use the `uvenv` command pretty much in place of `venv`
and it will work similarly. At the moment the `uvenv` command is
experimental but if the `uv` tool succeeds, `uvenv` will likely replace
`venv`.

## Installation

Arch Linux users can install [pinstall from the
AUR](https://aur.archlinux.org/packages/pinstall).

Python 3.8 or later is required and the [`sudo`](https://www.sudo.ws/)
program must be installed (to use the `service` command).

Note [pinstall is on PyPI](https://pypi.org/project/pinstall/) so just
ensure that [`pipx`](https://pypa.github.io/pipx/) is installed then
type the following:

```
$ pipx install pinstall
```

To upgrade:

```
$ pipx upgrade pinstall
```

## Command Line Tab Completion

Command line shell [tab
completion](https://en.wikipedia.org/wiki/Command-line_completion) is
automatically enabled on `pinstall` commands and options using
[`argcomplete`](https://github.com/kislyuk/argcomplete). You may need to
first (once-only) [activate argcomplete global
completion](https://github.com/kislyuk/argcomplete#global-completion).

## License

Copyright (C) 2023 Mark Blakeney. This program is distributed under the
terms of the GNU General Public License. This program is free software:
you can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation,
either version 3 of the License, or any later version. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at
<http://www.gnu.org/licenses/> for more details.

<!-- vim: se ai syn=markdown: -->

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pinstall",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "venv, virtualenv, systemd, service, pip, pipx, pyproject.toml",
    "author": null,
    "author_email": "Mark Blakeney <mark.blakeney@bullet-systems.net>",
    "download_url": "https://files.pythonhosted.org/packages/e1/2e/0be5f8b67ceae6cc4a357cdacf466d48c1c9281aea9dbce34b3f86586192/pinstall-1.18.tar.gz",
    "platform": null,
    "description": "## PINSTALL - Installer/Utility Tool for Python Programs\n[![PyPi](https://img.shields.io/pypi/v/pinstall)](https://pypi.org/project/pinstall/)\n[![AUR](https://img.shields.io/aur/version/pinstall)](https://aur.archlinux.org/packages/pinstall/)\n\nThis is a simple \"swiss-army\" tool to facilitate installing Python\nprograms on Linux systems. The following commands are presently\nimplemented, each as an independent [plugin](pinstall/commands).\n\nThe latest documentation and code is available at\nhttps://github.com/bulletmark/pinstall.\n\n## Usage\n\nType `pinstall` or `pinstall -h` to view the usage summary:\n\n```\nusage: pinstall [-h]\n                   {project,pyenv,service,status,uv,uvenv,venv,version} ...\n\nInstaller/utility tool for Python programs.\n\noptions:\n  -h, --help            show this help message and exit\n\nCommands:\n  {project,pyenv,service,status,uv,uvenv,venv,version}\n    project             Creates a bare-bones Python pyproject.toml file to\n                        facilitate installation by pipx or pip.\n    pyenv               Updates all pyenv python versions and creates links to\n                        current major versions.\n    service             Installs systemd services and corresponding timers.\n    status              Reports systemctl status of services and timers\n                        installed from the current directory.\n    uv                  Installs or updates the uv tool.\n    uvenv               Creates a Python virtual environment using uv.\n    venv                Creates a Python virtual environment using venv + pip.\n    version             Reports this program's version.\n```\n\nType `pinstall <command> -h` to see specific help/usage for any\nindividual command:\n\n### Command `project`\n\n```\nusage: pinstall project [-h] [-f REQUIREMENTS_FILE] [-o] [app]\n\nCreates a bare-bones Python pyproject.toml file to facilitate\ninstallation by pipx or pip.\n\nUseful when you have an app.py and it's special package dependencies\nspecified in requirements.txt and want to install that app.py (as\ncommand \"app\") using pipx or pip but don't have a pyproject.toml (or old\nstyle setup.py). Run this command in the same directory as the files and\nit will create a bare-bones ./pyproject.toml file. This will allow you\nto install the app using `pipx install .`, or `pip install .` commands.\n\nWill also parse PEP 723 dependencies from a script tag in the Python\nfile.\n\nYour app.py must have a main() function to be called when the app is\nrun.\n\npositional arguments:\n  app                   app[.py] or app/ package to create pyproject.toml for.\n                        If not specified then looks for a single .py file in\n                        current directory.\n\noptions:\n  -h, --help            show this help message and exit\n  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE\n                        default=\"requirements.txt\"\n  -o, --overwrite       overwrite existing pyproject.toml file\n```\n\n### Command `pyenv`\n\n```\nusage: pinstall pyenv [-h] [-l] [-p] [-m]\n\nUpdates all pyenv python versions and creates links to current major versions.\n\noptions:\n  -h, --help            show this help message and exit\n  -l, --list            just list latest versions, do not update or purge\n  -p, --purge           just purge old versions if later is installed\n  -m, --remove-major-symlinks\n                        remove all symlinks to major versions\n```\n\n### Command `service`\n\n```\nusage: pinstall service [-h] [-u] [-s] [-e] [-r] [units ...]\n\nInstalls systemd services and corresponding timers.\n\nSubstitutes template strings within each *.service file in the current\ndirectory (and in any corresponding .timer file); installs the\nsubstituted file[s] to the appropriate systemd system (or user) unit\nconfiguration directory; then enables and starts the service (or the\ntimer).\n\nTemplate strings can be any of the following:\n\n    HOME      : Home directory path of the invoking user\n    USER      : User name of invoking user\n    USERID    : Numeric user ID of the invoking user\n    GROUPID   : Numeric group ID of the invoking user\n    WORKDIR   : Directory path of the service file\n    PROGDIR   : Same as WORKDIR\n    BASENAME  : Directory name of the service file\n    PROG      : Stem name of the service file (i.e. \"name\" in \"name.service\")\n    PROGTITLE : Upper case PROG\n\nTemplate strings are specified in .service and .timer files by wrapping\nthem in hash symbols. Installed copies of these source files have all\ninstances of template strings replaced by their value. E.g. #HOME#\ngets replaced by the user's home directory path.\n\npositional arguments:\n  units            systemd service file[s]\n\noptions:\n  -h, --help       show this help message and exit\n  -u, --user       install as user service\n  -s, --no-start   do not start service[s]\n  -e, --no-enable  do not enable service[s]\n  -r, --remove     just uninstall and remove service[s]\n```\n\n### Command `status`\n\n```\nusage: pinstall status [-h] [-u] [units ...]\n\nReports systemctl status of services and timers installed from the\ncurrent directory.\n\npositional arguments:\n  units       systemd service file[s]\n\noptions:\n  -h, --help  show this help message and exit\n  -u, --user  report for user service\n```\n\n### Command `uv`\n\n```\nusage: pinstall uv [-h] [-r] [-p PREFIX] [-V]\n\nInstalls or updates the uv tool.\n\nRead about uv at https://github.com/astral-sh/uv.\nIf run this as root/sudo, it installs to /usr/bin/uv otherwise it\ninstalls as your user to $HOME/.local/bin/uv. Requires curl to be\ninstalled.\n\noptions:\n  -h, --help            show this help message and exit\n  -r, --remove          just remove any existing uv executable\n  -p PREFIX, --prefix PREFIX\n                        install to /bin under given system prefix path\n  -V, --version         just report version of installed uv executable\n```\n\n### Command `uvenv`\n\n```\nusage: pinstall uvenv [-h] [-d DIR] [-p PYTHON] [-u UV]\n                         [-f REQUIREMENTS_FILE] [-r] [-i [PACKAGE ...]] [-R]\n                         [args ...]\n\nCreates a Python virtual environment using uv.\n\nRuns `uv venv` to create a `.venv/` (optionally for the specified Python\nname, or path) then installs all package dependencies from 1)\nrequirements.txt if present, or 2) from pyproject.toml if present.\n\n[uv](https://github.com/astral-sh/uv) is a new Python installation tool\nwhich is more efficient and **much** faster than `python -m venv` and\n`pip`. You can use the `uvenv` command pretty much in place of `venv`\nand it will work similarly. At the moment the `uvenv` command is\nexperimental but if the `uv` tool succeeds, `uvenv` will likely replace\n`venv`.\n\npositional arguments:\n  args                  optional arguments to `uv venv` command(add by\n                        starting with \"--\"). See options in `uv venv -h`\n\noptions:\n  -h, --help            show this help message and exit\n  -d DIR, --dir DIR     directory name to create, default=\".venv\"\n  -p PYTHON, --python PYTHON\n                        python executable (or venv dir), default=\"python3\"\n  -u UV, --uv UV        path to uv executable, default=\"uv\"\n  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE\n                        default=\"requirements.txt\"\n  -r, --no-require      don't pip install requirements/dependencies\n  -i [PACKAGE ...], --install [PACKAGE ...]\n                        also install (1 or more) given packages\n  -R, --remove          just remove any existing venv and finish\n```\n\n### Command `venv`\n\n```\nusage: pinstall venv [-h] [-d DIR] [-p PYTHON] [-f REQUIREMENTS_FILE] [-r]\n                        [-u] [-i [PACKAGE ...]] [-w] [-W] [-R] [-v]\n                        [args ...]\n\nCreates a Python virtual environment using venv + pip.\n\nRuns `python -m venv` to create a `.venv/` (optionally for the specified\nPython name, or path); adds a .gitignore to it to be automatically\nignored by git; upgrades the venv with the latest pip + setuptools +\nwheel; then installs all package dependencies from 1) requirements.txt\nif present, or 2) from pyproject.toml if present.\n\npositional arguments:\n  args                  optional arguments to python -m venv (add by starting\n                        with \"--\"). See options in `python -m venv -h`\n\noptions:\n  -h, --help            show this help message and exit\n  -d DIR, --dir DIR     directory name to create, default=\".venv\"\n  -p PYTHON, --python PYTHON\n                        python executable (or venv dir), default=\"python3\"\n  -f REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE\n                        default=\"requirements.txt\"\n  -r, --no-require      don't pip install requirements/dependencies\n  -u, --no-upgrade      don't upgrade pip/setuptools in venv\n  -i [PACKAGE ...], --install [PACKAGE ...]\n                        also install (1 or more) given packages\n  -w, --without-pip     don't install pip or requirements in venv (i.e. pass\n                        --without-pip to python -m venv)\n  -W, --no-wheel        don't install wheel in venv\n  -R, --remove          just remove any existing venv and finish\n  -v, --verbose         verbose pip install (can add multiple times to\n                        increase verbosity)\n```\n\n### Command `version`\n\n```\nusage: pinstall version [-h]\n\nReports this program's version.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n## Management of pyenv versions\n\n[Pyenv](https://github.com/pyenv/pyenv) gives you the handy ability to\ninstall multiple versions of Python. However, there is no easy/quick way\nto update all those versions unless you update each manually. So\npinstall offers a `pyenv` command to do this. Just run `pinstall pyenv`\nwhich will check your versions and update any which have a newer minor\nversion. E.g. if you have 3.7.3 installed and 3.7.4 is available then\n`pinstall pyenv` will invoke `pyenv` to install 3.7.4. You can also run\n`pinstall pyenv -p` to automatically purge any older/superceded\nversions, i.e. to remove 3.7.3 in this example.\n\n`pinstall pyenv` also does something else each time you run it. It\ncreates or updates major version links. E.g. after installing 3.7.4 as\nin the above example, `pinstall pyenv` will also create a link in your\n`pyenv` versions directory `3.7 -> 3.7.4`. This allows you to create a\nvirtual environment in either of two ways:\n\n1. `pinstall venv -p ~/.pyenv/versions/3.7.4/bin/python` will create a\n   virtual environment using 3.7.4 permanently, or:\n\n2. `pinstall venv -p ~/.pyenv/versions/3.7/bin/python` will create a\n   virtual environment using the link 3.7 which initially points to\n   3.7.4 but will automatically use 3.7.5 when/if the minor version gets\n   updated (i.e. after you have done a later `pinstall pyenv` to find\n   and install a new 3.7.5). Note that python minor (i.e. maintenance)\n   version updates are [always backwards\n   compatible](https://devguide.python.org/developer-workflow/development-cycle/index.html#maintenance-branches).\n\n## Experimental command `uvenv`\n\n[uv](https://github.com/astral-sh/uv) is a new Python installation tool\nwhich is more efficient and **much** faster than `python -m venv` and\n`pip`. You can use the `uvenv` command pretty much in place of `venv`\nand it will work similarly. At the moment the `uvenv` command is\nexperimental but if the `uv` tool succeeds, `uvenv` will likely replace\n`venv`.\n\n## Installation\n\nArch Linux users can install [pinstall from the\nAUR](https://aur.archlinux.org/packages/pinstall).\n\nPython 3.8 or later is required and the [`sudo`](https://www.sudo.ws/)\nprogram must be installed (to use the `service` command).\n\nNote [pinstall is on PyPI](https://pypi.org/project/pinstall/) so just\nensure that [`pipx`](https://pypa.github.io/pipx/) is installed then\ntype the following:\n\n```\n$ pipx install pinstall\n```\n\nTo upgrade:\n\n```\n$ pipx upgrade pinstall\n```\n\n## Command Line Tab Completion\n\nCommand line shell [tab\ncompletion](https://en.wikipedia.org/wiki/Command-line_completion) is\nautomatically enabled on `pinstall` commands and options using\n[`argcomplete`](https://github.com/kislyuk/argcomplete). You may need to\nfirst (once-only) [activate argcomplete global\ncompletion](https://github.com/kislyuk/argcomplete#global-completion).\n\n## License\n\nCopyright (C) 2023 Mark Blakeney. This program is distributed under the\nterms of the GNU General Public License. This program is free software:\nyou can redistribute it and/or modify it under the terms of the GNU\nGeneral Public License as published by the Free Software Foundation,\neither version 3 of the License, or any later version. This program is\ndistributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or\nFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at\n<http://www.gnu.org/licenses/> for more details.\n\n<!-- vim: se ai syn=markdown: -->\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Installer Tool for Python Programs",
    "version": "1.18",
    "project_urls": {
        "Homepage": "https://github.com/bulletmark/pinstall"
    },
    "split_keywords": [
        "venv",
        " virtualenv",
        " systemd",
        " service",
        " pip",
        " pipx",
        " pyproject.toml"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5b13dc2646e17ef969200fd718bf2313f700c63abafa59b159b43c19c3f81134",
                "md5": "73080aa465243ed54372a62303386ed8",
                "sha256": "3617659bfff6b2366bc4f8d705a12ac6b86e7643f7d1057799ff599426d827ec"
            },
            "downloads": -1,
            "filename": "pinstall-1.18-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "73080aa465243ed54372a62303386ed8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 20030,
            "upload_time": "2024-10-01T22:22:52",
            "upload_time_iso_8601": "2024-10-01T22:22:52.864556Z",
            "url": "https://files.pythonhosted.org/packages/5b/13/dc2646e17ef969200fd718bf2313f700c63abafa59b159b43c19c3f81134/pinstall-1.18-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e12e0be5f8b67ceae6cc4a357cdacf466d48c1c9281aea9dbce34b3f86586192",
                "md5": "f06371053c5fefb89e04ff6d846bc449",
                "sha256": "f7d0b8311a5e2066d6993c48daac5b5ff92032b3ceb96ccc9e292edcb37b1b88"
            },
            "downloads": -1,
            "filename": "pinstall-1.18.tar.gz",
            "has_sig": false,
            "md5_digest": "f06371053c5fefb89e04ff6d846bc449",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 18402,
            "upload_time": "2024-10-01T22:22:54",
            "upload_time_iso_8601": "2024-10-01T22:22:54.217798Z",
            "url": "https://files.pythonhosted.org/packages/e1/2e/0be5f8b67ceae6cc4a357cdacf466d48c1c9281aea9dbce34b3f86586192/pinstall-1.18.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-01 22:22:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bulletmark",
    "github_project": "pinstall",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pinstall"
}
        
Elapsed time: 0.30039s