Skip to main content

A python project environment build tool.

Project description

朴刀 podao

一把朴刀开局。 朴刀是一个 Python 项目搭建脚手架,组合使用 pyenv、venv 和 pip 等工具搭建虚拟环境、分组依赖包。

Podao is an python project environment setup tool, it combines pyenv, venv, pip to ease the work to build an isolated environment for python project.

朴刀

朴刀是一种刀身窄长、刀柄较短的刀,装上“杆棒”后变为枪,名为朴刀枪,以“搠、刺”为主。

朴刀在《水浒传》里广为人知,印象里朴刀都很长,这是错的;正确的定义是:朴刀短柄,柄中空,是单手持握的短兵器,特点在于刀柄中空,旋入一根哨棒就可以当做长兵器使用,故尔武松等人都习惯手持哨棒,腰配朴刀,如此两件兵器可以在需要时合二为一,就像 pyenv 和 venv 一样。

如:“卢俊义取出朴刀,装在杆棒上,三个了丫儿扣牢了,赶著车子奔梁山泊路上来”。

优势 advantage

-使用 pyenv、venv 和 pip 搭建项目,零学习成本; -使用文件夹名作为 shell session 提示符,无随机字符、好看、有意义; -使用 pyproject.toml 和 requirements.txt 文件描述项目,不造轮子、零侵入;

局限 weakness

podao 只解决虚拟环境的搭建和依赖包的分组的问题,更具体的项目配置需要手动更改 pyproject.toml 文件。

pyenv

pyenv 用于管理项目环境的 python 版本,要使用 podao 需事先安装 pyenv,参考官网

pyenv installation

pyenv 的安装配置稍显复杂,安装过程可分 3 步:

  1. 安装 pyenv 依赖,包括 gitwiki
  2. 安装 pyenv,wiki
  3. 配置 pyenv 环境,wiki

有人将安装过程封装成了安装脚本,目前只有 Ubuntu 版。

安装 install

pip install podao

一般将 podao 安装在系统环境,也可以安装在虚拟环境:

安装在系统环境

  1. 切换到项目路径
  2. 执行 podao init .

安装在虚拟环境

  1. 激活安装有 podao 的虚拟环境
  2. 切换到项目路径
  3. 执行 podao init .
  4. 退出安装有 podao 的虚拟环境 deactivate
  5. 激活项目虚拟环境 source bin/activate

示例 examples

创建项目环境

pd init . 3.10.4
pd init ~/workspace/project_name 

安装软件包

pd install pytest -d
pd install 'ReportLab>=1.2' -g pdf

卸载软件包

pd uninstall requests

创建快照

pd freeze
pd freeze -a
pd freeze -d
pd freeze -g pdf

使用 usage

pd init dir [python] [-ide]

pd init 命令使用 dir 目录和 python 版本创建虚拟环境,包括 src、test、pyproject.toml、LICENSE、README.md和.gitignore。使用目录名作为项目名、当前系统用户作为author、MIT 为默认 LICENSE、当前年份和系统用户作为 LICENSE 时间和用户。

  • dir - 项目目录,必填项,使用 . 表示当前目录
  • python - python 版本号,如果不指定 python,则使用当前系统安装的最高版本的python
  • -ide - 如果指定 IDE 会生成 IDE 的配置文件,目前仅支持 vscode

pd install packages

pd install 命令使用当前虚拟环境的 pip install -U 命令安装 packages 所指定的包,并将包添加到 pyproject 的相应依赖组中。

  • -d - 将软件包添加到 optional-dependencies 表的 dev
  • -g - 将软件包添加到 optional-dependencies 表的指定的组
  • 不使用选项,将软件包默认安装到 dependencies 表

pd uninstall packages

pd uninstall 命令使用 pip uninstall 命令卸载 packages 所指定的包

pd freeze

pd freeze 命令结合 pip freezepyproject.toml 生成当前系统所需的软件包的版本快照到 requirements.txt 文件,然后使用 pip install -r requirements.txt 命令安装即可。

  • -d - 创建 dev 依赖和主依赖的版本快照
  • -a - 创建所有依赖的版本快照
  • 不适用选项,将创建主依赖的版本快照

source bin/activate

激活虚拟环境,会在 shell 提示符左侧显示当前虚拟环境的名字,即虚拟环境文件夹的名字。

pip install -r requirements.txt

将通过 requirements.txt 文件定义的虚拟环境快照按照到当前环境。

License

MIT © Li zhigang

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

podao-0.8.2.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

podao-0.8.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file podao-0.8.2.tar.gz.

File metadata

  • Download URL: podao-0.8.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for podao-0.8.2.tar.gz
Algorithm Hash digest
SHA256 e3e9e06aa1cdf8db584a2871ae1f300103f144c38c726acd2211e604e50a13a1
MD5 9252e419d8bc29bbbaf6dbb2725b7bcb
BLAKE2b-256 544cb720288e012fad99585dc97f897c37a7e61f05624e3b323bd84b65acd41b

See more details on using hashes here.

File details

Details for the file podao-0.8.2-py3-none-any.whl.

File metadata

  • Download URL: podao-0.8.2-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for podao-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9dca1ee9b3e07adbbba4312768906591cb19e94ea24d2b27eaf251abb1b12e29
MD5 f257b6a0b1a24c8f5c886390b5518e81
BLAKE2b-256 2ed15da544727a89d010008f2d7193c927fe2595574fa48d8606b048885eca6d

See more details on using hashes here.

Supported by

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