pips is a GUI for pip, github and conda - Python package browser, written in PowerShell.
This script helps to keep packages updated.
- Hit Check for Updates
- Choose packages
- Select Update action and hit Execute
- Dependency-free
- Search and install from pip, conda and github
- Looks up for all installed Python distributions
- Filter and sort packages
- View package dependecy tree
- Manage virtual environments
- Adds firewall rules for venv
- Manage environment variables for venv
- Documentation viewer with simple highlighting and browser-like navigation
- Completion for packages, versions, paths, git tags, PyDoc topics
- Package name typosquatting check
Install packages dialog:
git clone --recurse-submodules https://github.com/ptytb/pips
pips.cmd
Keys | Action |
---|---|
/ | Open search text dialog (in Log Pane or PyDoc browser) |
^+, ^-, ^* | Zoom document or reset to the original size (in Log Pane or PyDoc browser) |
HJKL, ^B, ^F, g, G | Vim-style navigation (in Log Pane and PyDoc browser) |
Enter or Space | Toggle package selection |
F1 .. F12 | Choose a current action, in the same order it appears in the dropdown list |
Shift+Enter (on package table) | Execute action for selected packages |
Shift+Enter (install window) | Fuzzy name search |
Ctrl+Enter or Double click | Open package home page in browser |
Escape | Clear filter, or Switch between filter and package table |
Enter (on Filter) | Focus on packages editable |
Shift+Mouse Hover | Fetch package details for a tooltip |
Ctrl-C (on interpreter combobox) | Copy full python executable path |
Delete (on interpreter combobox) | Remove virtual env entry added by user, with confirmation |
pips has a feature of protection from typosquatting of package names. It assists to an unprepared user to explore and install packages instantly, without wasting time to figure out if a package name is spelled properly, or is it popular, genuine or malicious package.
This is being achieved by using the following algorithms:
-
Search for package name candidates using Levenshtein distance and BK-tree
-
Sort and filter these candidates using the index built with following parameters:
- Number of connections with other packages using dependency graph
- Package's first release date
- Number of releases
- Average time interval before the next release
- Average number of downloads per release
-
Search through the index
- Search for reverse dependencies using Adjacency matrix
More details about how it works here. (TODO)
The file known-packages-bktree.bin contains all the package names from PyPI in the form of BK-tree.
git clone https://github.com/ptytb/BK-tree
Import-Module .BK-tree\bktree
$bktree = [BKTree]::new()
$simple = Invoke-WebRequest -Uri 'https://pypi.python.org/simple/'
foreach ($link in $simple.Links) {
$bktree.add($link.innerText)
}
$bktree.SaveArrays('known-packages-bktree.bin')
The Python logo used in this program is a trademark of The Python Software Foundation. This program is written in the PowerShell programming language and has a few pieces of inline Python code, and relies on external Python executables.
pypi-cli a command-line interface to the Python Package Index. yip a frontend for searching PyPI, a feature rich alternative to pip search
pipreqs a tool to generate requirements.txt file based on imports of any project pigar a tool to generate requirements file for your Python project
safety check your installed dependencies for known security vulnerabilities Pytosquatting fixing typosquatting+namesquatting threats in Python Package Index auditwheel auditing and relabeling cross-distribution Linux wheels
Copyright, 2018, Ilya Pronin. This code is released under the MIT license.