{"id":16971727,"url":"https://github.com/juancarlospaco/plz","last_synced_at":"2025-03-22T14:31:24.893Z","repository":{"id":50897054,"uuid":"163433381","full_name":"juancarlospaco/plz","owner":"juancarlospaco","description":"PLZ Python PIP Alternative","archived":false,"fork":false,"pushed_at":"2022-12-10T01:54:52.000Z","size":6142,"stargazers_count":40,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T12:01:47.395Z","etag":null,"topics":["cpython","package-manager","pip","pip3","pypi","pypi-packages","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juancarlospaco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://gist.github.com/juancarlospaco/37da34ed13a609663f55f4466c4dbc3e"]}},"created_at":"2018-12-28T17:16:53.000Z","updated_at":"2024-02-28T21:56:26.000Z","dependencies_parsed_at":"2023-01-26T02:02:41.347Z","dependency_job_id":null,"html_url":"https://github.com/juancarlospaco/plz","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juancarlospaco%2Fplz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juancarlospaco%2Fplz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juancarlospaco%2Fplz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juancarlospaco%2Fplz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juancarlospaco","download_url":"https://codeload.github.com/juancarlospaco/plz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244971974,"owners_count":20540901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpython","package-manager","pip","pip3","pypi","pypi-packages","python","python3"],"created_at":"2024-10-14T00:54:10.932Z","updated_at":"2025-03-22T14:31:24.269Z","avatar_url":"https://github.com/juancarlospaco.png","language":"Python","funding_links":["https://gist.github.com/juancarlospaco/37da34ed13a609663f55f4466c4dbc3e"],"categories":[],"sub_categories":[],"readme":"# PLZ\n\n- PLZ [Python PIP](https://pypi.org) alternative.\n\n\u003cimg src=\"https://raw.githubusercontent.com/juancarlospaco/plz/master/python-wat.png\" width=\"256\" height=\"256\" title=\"plz for Linux! (1 file, 1 Mb)\"\u003e\n\n![](https://img.shields.io/github/languages/count/juancarlospaco/plz?logoColor=green\u0026style=for-the-badge)\n![](https://img.shields.io/github/languages/top/juancarlospaco/plz?style=for-the-badge)\n![](https://img.shields.io/github/stars/juancarlospaco/plz?style=for-the-badge)\n![](https://img.shields.io/github/languages/code-size/juancarlospaco/plz?style=for-the-badge)\n![](https://img.shields.io/github/issues-raw/juancarlospaco/plz?style=for-the-badge)\n![](https://img.shields.io/github/issues-pr-raw/juancarlospaco/plz?style=for-the-badge)\n![](https://img.shields.io/liberapay/patrons/juancarlospaco?style=for-the-badge)\n![CI](https://github.com/juancarlospaco/plz/workflows/CI/badge.svg)\n\n\n# Use\n\n```console\n$ plz install pre-commit   # Install 1 or more packages\n$ plz uninstall pre-commit # Uninstall 1 or more packages\n$ plz reinstall pre-commit # Reinstall 1 or more packages\n$ plz download pre-commit  # Download 1 or more packages\n$ plz hash file.py         # Show SHA CheckSum of file/package\n$ plz init                 # New Python project template (Interactive)\n$ plz stats                # PyPI official service status report\n$ plz newpackages          # List all the new Packages uploaded to PyPI recently\n$ plz lastupdates          # List all existing Packages updated on PyPI recently\n$ plz lastjobs             # List all new Job Posts updated on Python recently\n$ plz userpackages         # List all existing Packages by User (Interactive)\n$ plz latestversion        # Show the Latest Version of a PYPI Package (SemVer)\n$ plz forceInstallPip      # Force install PIP on arbitrary folder (get-pip.py)\n$ plz doc file.md          # Markdown/ReSTructuredText to HTML  (MD/RST can be mixed).\n$ plz doc2latex file.md    # Markdown/ReSTructuredText to Latex (MD/RST can be mixed).\n$ plz doc2json file.md     # Markdown/ReSTructuredText to JSON  (MD/RST can be mixed).\n$ plz upload packg-1.0.zip # Similar to \"twine upload\" (Interactive,asks user,wont need Twine).\n$ plz parserequirements    # Parse a requirements file, print it to stdout (Linter,Debug,etc).\n$ plz fakecommits          # Generate \"Fake\" Git commits (Restart CI,trigger GitHub Actions,etc).\n$ plz bug                  # Python Bug Report Assistant (Interactive).\n$\n$ plz --python=\"/path/to/python\"  # Full path to a Python executable to use, defaults to autodetect.\n$ plz --dotenv=\"/path/to/.env\"    # Full path to a Type-safe DotEnv file.\n$ plz --cleanpyc           # Clean all __pycache__ and *.pyc\n$ plz --cleanpypackages    # Clean all __pypackages__\n$ plz --cleantemp          # Clean all temporary folder.\n$ plz --cleanpipcache      # Clean all PIP Cache folder.\n$ plz --cleanvenvs         # Clean Virtualenvs (interactive, asks Y/N 1-by-1).\n$ plz --publicip           # Show your Public IP Address (Internet connectivity check).\n$ plz --log=file.log       # Full path to a verbose local log file.\n$ plz --putenv:key=val     # Set an environment variable \"KEY=Value\", can be repeated.\n$ plz --suicide            # Deletes itself permanently and exit (single file binary).\n$ plz --dump               # Show system info JSON and quit (for Developers and Bug Reporting).\n$ plz --version            # Show Version\n$ plz --help               # Show Help\n```\n\n\n# Interactive Python Project Creator\n\n\u003cdetails\u003e\n\n![](https://raw.githubusercontent.com/juancarlospaco/plz/master/project_creator.png)\n\n\u003c/details\u003e\n\n# Requirements Parser for debug\n\n\u003cdetails\u003e\n\n![](https://raw.githubusercontent.com/juancarlospaco/plz/master/requirements_parser.png)\n\n\u003c/details\u003e\n\n\n# Type-safe DotEnv\n\nType-safe `.env` file is just a `.env` but Typed.\n\nTypes are enforced via a comment, so it is still a \"vanilla\" `.env`.\n\nType-safe `.env` file can be used with unsafe `.env` parsers, legacy parsers will ignore the comment.\n\nKeys must be a non-empty ASCII string `[a-zA-Z0-9_]`, keys are validated. Key-Value separator must be `=`.\n\nParses the same `.env` file from the vanilla implementation tests.\n\nSeveral orders of magnitude faster than the vanilla implementation. Implementation is ~ 50 lines of code.\n\nExample:\n\n```ini\n# This is a comment\nDB_HOST=localhost  # string\nDB_USER=root       # string\nDB_PASS=\"123\"      # string\nDB_TIMEOUT=42      # int\nDELAY=3.14         # float\nACTIVE=true        # bool\n```\n\n\n# Features\n\n- Python `1.x`, `2.x`, `3.x` support.\n- Private PYPI custom URL.\n- No configurations needed.\n- No `PATH` pollution.\n- No dependency on system PIP, no dependency on system Python.\n- 1 Megabyte, 0 Dependencies.\n- Designed for Docker or Alpine usage.\n- Install, uninstall, reinstall, download, upload to PyPI, etc.\n- Real Inferred Strong Static Typing.\n- No Garbage Collector (Rust-like memory management).\n- Immutable programming, No Global Mutable State.\n- The only PIP alternative in the world that just works even with PIP/Python/Virtualenv completely broken.\n- Compiled machine code performance, as fast as optimized hand crafted C.\n- High performance with low resources (RPi, VPS, cloud, old pc, etc).\n- Single file binary, it can even delete itself after use.\n- No Installs, no setups, just copy \u0026 paste and run (even on Alpine).\n- Colored output on the Terminal.\n- Project skeleton creator to create your own new Python projects.\n- Wont save any passwords, databases, keys, secrets, to disk nor Internet.\n- No temporary folders nor files.\n- Not meant as a drop-in replacement for anything pre-existing.\n- Tiny single file source code (not counting string static constants).\n- Self-Documentation Generator outputs HTML, PDF, JSON.\n- Works fully independently self-contained standalone application.\n- Fast startup time.\n\n**WIP:**\n\n![](https://raw.githubusercontent.com/juancarlospaco/plz/master/pepehack.gif \"Work in progress!\")\n\n\n# Uninstall\n\n- Delete it.\n\n\n# Dependencies\n\n- It does NOT depend on `pip` (Not a `pip` wrapper), it can work with `pip` completely broken.\n\n\n# Requisites\n\n- Python 64Bit.\n\n\n# FAQ\n\n- How to use a Private PYPI custom URL ?.\n\nCompile adding the argument ` -d:pypiApiUrl=\"http://url-here.io\" `.\n\n- This requires Cython ?.\n\nNo.\n\n- This is a drop-in replacement of X ?.\n\nNo.\n\n- Whats \"Generate Fake Git Commits\" ?.\n\nSometimes you may need to create commits to restart CI, trigger GitHub Actions, Git Hooks, etc\nbut you dont have anything new to commit, that feature can create empty commits to force-trigger the Git service.\n\nSome Git services do not trigger for new repos with 1 or 2 commits,\nthat feature can create empty commits to force-start the Git service.\n\n\n# Python Bugs\n\nFrom XML-RPC API Server-side this endpoints wont work anymore (Not my Bug):\n\n- `release_downloads`, `top_packages`, `updated_releases`, `changed_packages`.\n- Sometimes PYPI returns Python Tracebacks as strings on the body of the response.\n- We tried to implement fully parallel install of packages, but because of the way Python packages work, they need to be installed sequentially whatsoever.\n\n\n## Stars\n\n[![Stars over time](https://starchart.cc/juancarlospaco/plz.svg)](https://starchart.cc/ThomasTJdev/nim_websitecreator \"Star PLZ on GitHub!\")\n\n\n\u003cdetails\u003e\n  \u003csummary\u003eNotes\u003c/summary\u003e\n\n- http://tonsky.me/blog/disenchantment\n- https://medium.com/telnyx-engineering/rip-pipenv-tried-too-hard-do-what-you-need-with-pip-tools-d500edc161d4\n- http://arindampaul.blogspot.com/2016/03/python-tips-avoid-pip-as-much-as.html\n- https://github.com/pypa/pipenv/issues/4058#issue-537298446\n- https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/\n- https://old.reddit.com/r/Python/comments/chkah3/is_pipenv_dead_why_has_the_project_stopped/\n- https://np.reddit.com/r/Python/comments/8jd6aq/why_is_pipenv_the_recommended_packaging_tool_by/\n- https://github.com/pypa/pipenv/commit/6d77e4a0551528d5d72d81e8a15da4722ad82f26\n- https://github.com/pypa/pipenv/commit/1c956d37e6ad20babdb5021610b2ed2c9c4203f2\n- https://github.com/pypa/pipenv/commit/e3c72e167d21b921bd3bd89d4217b04628919bb2\n- https://github.com/mitsuhiko/pipsi#pipsi (Dead Project)\n- https://github.com/zachtylr21/pyp#pyp\n- https://www.python.org/dev/peps/pep-0650\n- https://pip.pypa.io/en/stable/news/#id1\n- https://discuss.python.org/t/what-to-do-about-gpus-and-the-built-distributions-that-support-them/7125\n\nQuote from PIPEnv Project:\n\n\u003e pipenv release cadence came to a super dramatic halt because of a lot of upstream issues\n\u003e (pip broke, setuptools broke, then pip and setuptools both released breaking fixes,\n\u003e and we have about 15 dependencies which I personally maintain).\n\nQuote from PIP Project:\n\n\u003e Due to lack of interest and maintenance, 'pip bundle' and support for installing files is now deprecated.\n\nImportant, near year 2021, the PyPI server started responding empty responses and error messages,\nbut with HTTP status 200 OK, to PIP alternatives that are not the official PIP, the error message said\n`HTTPTooManyRequests: The action could not be performed because there were too many requests by the client. Limit may reset in 1 seconds.`\nand your client has to wait \u003e1 second per request, even for empty responses, and sometimes retries fail anyway,\nthis looks kinda intentional, maybe to make it look like PIP is the fastest or something like that ?.\n\nAll Python tools dropped support for Python `2.7` and `3.5`, some only support `3.8` as of ~2021.\n\nAs of 2021 PYPI says that the Search API of XML RPC is now \"permanently disabled\"\nhttps://status.python.org/incidents/grk0k7sz6zkp\n\nPIP breaks after upgrades https://github.com/pypa/pip/issues/5599\n\n\u003c/details\u003e\n\n\n# Send Crypto\n\n\u003cdetails\u003e \n\u003csummary title=\"Send Bitcoin\"\u003e\u003ckbd\u003e Bitcoin BTC \u003c/kbd\u003e\u003c/summary\u003e\n\n**BEP20 Binance Smart Chain Network BSC**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**BTC Bitcoin Network**\n```\n1Pnf45MgGgY32X4KDNJbutnpx96E4FxqVi\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary\u003e\u003ckbd\u003e Ethereum ETH \u003c/kbd\u003e \u003ckbd\u003e Dai DAI \u003c/kbd\u003e \u003ckbd\u003e Uniswap UNI \u003c/kbd\u003e \u003ckbd\u003e Axie Infinity AXS \u003c/kbd\u003e \u003ckbd\u003e Smooth Love Potion SLP \u003c/kbd\u003e \u003c/summary\u003e\n\n**BEP20 Binance Smart Chain Network BSC**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**ERC20 Ethereum Network**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n\u003c/details\u003e\n\u003cdetails\u003e \n\u003csummary title=\"Send Tether\"\u003e\u003ckbd\u003e Tether USDT \u003c/kbd\u003e\u003c/summary\u003e\n\n**BEP20 Binance Smart Chain Network BSC**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**ERC20 Ethereum Network**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**TRC20 Tron Network**\n```\nTWGft53WgWvH2mnqR8ZUXq1GD8M4gZ4Yfu\n```\n\u003c/details\u003e\n\u003cdetails\u003e \n\u003csummary title=\"Send Solana\"\u003e\u003ckbd\u003e Solana SOL \u003c/kbd\u003e\u003c/summary\u003e\n\n**BEP20 Binance Smart Chain Network BSC**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**SOL Solana Network**\n```\nFKaPSd8kTUpH7Q76d77toy1jjPGpZSxR4xbhQHyCMSGq\n```\n\u003c/details\u003e\n\u003cdetails\u003e \n\u003csummary title=\"Send Cardano\"\u003e\u003ckbd\u003e Cardano ADA \u003c/kbd\u003e\u003c/summary\u003e\n\n**BEP20 Binance Smart Chain Network BSC**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n**ADA Cardano Network**\n```\nDdzFFzCqrht9Y1r4Yx7ouqG9yJNWeXFt69xavLdaeXdu4cQi2yXgNWagzh52o9k9YRh3ussHnBnDrg7v7W2hSXWXfBhbo2ooUKRFMieM\n```\n\u003c/details\u003e\n\u003cdetails\u003e \n\u003csummary title=\"Send Sandbox\"\u003e\u003ckbd\u003e Sandbox SAND \u003c/kbd\u003e \u003ckbd\u003e Decentraland MANA \u003c/kbd\u003e\u003c/summary\u003e\n\n**ERC20 Ethereum Network**\n```\n0xb78c4cf63274bb22f83481986157d234105ac17e\n```\n\u003c/details\u003e\n\u003cdetails\u003e \n\u003csummary title=\"Send Algorand\"\u003e\u003ckbd\u003e Algorand ALGO \u003c/kbd\u003e\u003c/summary\u003e\n\n**ALGO Algorand Network**\n```\nWM54DHVZQIQDVTHMPOH6FEZ4U2AU3OBPGAFTHSCYWMFE7ETKCUUOYAW24Q\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e \n\u003csummary title=\"Send via Binance Pay\"\u003e Binance \u003c/summary\u003e\n  \nhttps://pay.binance.com/en/checkout/e92e536210fd4f62b426ea7ee65b49c3\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary title=\"Send via Lemon\"\u003e Lemon \u003c/summary\u003e\n  \n**LemonTag**\n```\n$juancarlospaco\n```\n\u003c/details\u003e\n\n\n[  ⬆️  ⬆️  ⬆️  ⬆️  ](#plz \"Go to top\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuancarlospaco%2Fplz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuancarlospaco%2Fplz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuancarlospaco%2Fplz/lists"}