Skip to main content

A fast pip tool with domestic mirror sources

Project description

qpip

qpip 是一个对 python -m pip 的轻量封装,默认使用更快的国内镜像,支持python包的安装、更新、卸载,提供面向项目开发的项目初始化、脚本运行等功能。

功能概览

  • 始终通过当前 Python 解释器执行 pip,避免依赖独立的 pip.exe
  • 默认使用国内镜像,并支持 alitsinghuadoubanpypi 四个镜像别名。
  • 支持 qpip install / qpip i
  • 支持 qpip update / qpip up,等价于 pip install --upgrade ...
  • 支持 qpip uninstall / qpip un,等价于 pip uninstall ...
  • 支持 qpip run,行为参考 npm run
  • 支持 qpip init,快速生成基础 pyproject.toml 和默认 scripts。
  • 帮助信息、错误提示和镜像列表输出均为中文。

安装

pip install qpip

镜像与基础用法

默认镜像是 ali

qpip install requests
qpip i requests

指定镜像有两种方式:

qpip tsinghua install numpy
qpip pip install numpy
qpip --mirror douban install pandas

查看内置镜像:

qpip --list-mirrors

修改默认镜像可以设置环境变量 QPIP_DEFAULT_MIRROR

set QPIP_DEFAULT_MIRROR=tsinghua
qpip install httpx

如果你已经显式传入 --index-url--extra-index-url--find-links--no-indexqpip 不会再覆盖源配置。

安装、升级、卸载

安装

qpip install requests
qpip i requests
qpip i -r requirements.txt

升级

qpip update requests
qpip up requests
qpip up requests fastapi
qpip up -r requirements.txt

qpip update / qpip up 会自动转换成:

python -m pip install --upgrade ...

说明:

  • 会继承和 install 相同的镜像注入规则。
  • 需要至少提供一个包名,或使用 -r/--requirement 指定依赖文件。

卸载

qpip uninstall requests
qpip un requests
qpip un -y requests
qpip uninstall -r requirements.txt

qpip uninstall / qpip un 会自动转换成:

python -m pip uninstall ...

说明:

  • 卸载命令不会注入镜像。
  • 其他参数行为与原生 pip uninstall 一致。

项目脚本

qpip run 会读取当前目录的 pyproject.toml,脚本来源优先级如下:

  1. [tool.qpip.scripts]
  2. [project.scripts]
  3. [project.gui-scripts]
  4. [tool.poetry.scripts]

如果存在 [tool.qpip.scripts],会优先使用它,不再回退到其他表。

tool.qpip.scripts 示例

[tool.qpip.scripts]
test = "python -m unittest discover -s tests -v"
"lint:check" = "python -m ruff check ."
serve = "python app.py"

qpip init 项目兼容示例

[project.scripts]
serve = "demo.cli:main"

[project.gui-scripts]
desktop = "demo.gui:start"

[tool.poetry.scripts]
worker = "demo.worker:main"

run 用法

列出当前项目脚本:

qpip run

执行脚本:

qpip run test
qpip run serve
qpip run lint:check

向脚本透传参数:

qpip run test -- -k api
qpip run serve -- --port 8000

说明:

  • qpip run <script> 会在当前项目目录执行脚本。
  • qpip run <script> -- <args> 会把 -- 后面的参数追加到脚本命令后。
  • 对于 [project.scripts][project.gui-scripts][tool.poetry.scripts]qpip 会按 entry point 方式导入并执行目标函数。
  • 如果脚本名包含 : 等特殊字符,TOML 里请给 key 加引号。
  • 如果当前目录没有 pyproject.toml,或者没有任何兼容的 scripts 配置,命令会直接报错。

项目初始化

qpip init
qpip init -y
qpip init --yes

qpip init 会在当前目录生成一个基础的 pyproject.toml,并默认写入:

[tool.qpip.scripts]
test = "python -m unittest discover -s tests -v"

如果当前目录没有 README.md,还会额外创建一个最小 README。

交互式字段

交互模式下会依次询问:

  • 项目名称
  • 版本
  • 描述
  • Python 版本要求
  • 作者
  • 邮箱
  • 许可证

直接回车可接受默认值。

默认值来源:

  • 项目名称:当前目录名的规范化结果
  • 版本0.1.0
  • Python 版本要求>=3.8
  • 作者:优先 QPIP_INIT_AUTHORGIT_AUTHOR_NAME,否则回退系统用户名
  • 邮箱:优先 QPIP_INIT_EMAILGIT_AUTHOR_EMAIL
  • 许可证MIT

交互模式会先预览即将写入的 pyproject.toml,然后确认:

确认写入 pyproject.toml 吗?([Y]/n):

预览模式:

qpip --dry-run init -y

说明:

  • 如果当前目录已存在 pyproject.toml,初始化会直接取消,避免覆盖现有配置。
  • 当前 init 只支持 -y--yes 两个专属参数。

其他命令

查看帮助:

qpip --help

如果你要把以 - 开头的参数直接传给 pip,请使用 --

qpip -- --version

支持的镜像

  • ali: https://mirrors.aliyun.com/pypi/simple/
  • tsinghua: https://pypi.tuna.tsinghua.edu.cn/simple/
  • douban: https://pypi.doubanio.com/simple/
  • pypi: https://pypi.org/simple/(额外支持别名 pipofficial

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpip-0.2.0.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpip-0.2.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file qpip-0.2.0.tar.gz.

File metadata

  • Download URL: qpip-0.2.0.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for qpip-0.2.0.tar.gz
Algorithm Hash digest
SHA256 558f70db57a059067a0d2fd16a2d0e9ae648b205f74e157111ab9a58d8c8f51d
MD5 72e72df5f236a2960dcf7307f400b521
BLAKE2b-256 4569528e48b4486268aec54f04360d907f212bc30eeaf76bd9abfdaf4d74c33a

See more details on using hashes here.

File details

Details for the file qpip-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: qpip-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for qpip-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b269334d4a3134af6855dbb13f496c41d80f89bf950f75227bd9d28acacfbf7
MD5 7f468c3532912c2795c8698f84bdbf53
BLAKE2b-256 24f7abbcc07aabcd8dccf0e6f974836fea4b91c0f75e7824fa82c1cfd48c0412

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page