安装pip、查看 site-packages、dist-packages 所在目录

pip 安装使用详解:http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa
python 包:https://pypi.python.org/pypi

1、Linux 源码安装 Python3

  1. 下载源码包
    https://www.python.org/downloads/
  2. 解压(以3.64版本为例)
    wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
    tar -zxvf Python-3.6.4.tgz
    cd Python-3.6.4
  3. 安装
    ./configure --prefix=/usr/local/python3
    make && make install 
  4. 添加软链接
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  5. 安装第三方库
    yum install python-pip  
    pip install --upgrade pip
    python3 -m pip freeze
    python3 -m pip install redis
    python3 -m pip install pymongo
    python3 -m pip install pymysql
    python3 -m pip install configparser
    豆瓣源:
    pip Install:pip install -i https://pypi.douban.com/simple/ 

安装 pip3 ( centos )

install pip3 for python 3.x:https://www.cnblogs.com/wenchengxiaopenyou/p/5709218.html

2、安装 pip

Python 装包的几种方式

  • 1. easy_install 是最古老的包安装方式,目前基本没有人使用。
  • 2. pip 是最主流的包管理方案,类似于 macOS 上的 brew,Ubuntu 上的 apt,CentOS 上的 yum。使用 pip install xxx 就可以从 PYPI 上搜索并安装。
  • 3. pipx 依赖 pip 和 venv,是一个专门用于安装和管理包的 CLI应用程序的工具,简化了使用 venv 或者 virtualenv 新建虚拟环境步骤,使用 pipx 安装的 Python 包会单独安装到一个全新的独有虚拟环境。
    $ python3 -m pip install --user pipx
    $ python3 -m userpath append ~/.local/bin
    # 创建虚拟环境并安装包
    $ pipx install pkg
  • 4. 如果源码中有 setup.py 文件,命令直接安装:python setup.py install
  • 5. 使用 yum。Python 包在使用 setup.py 构建的时候,对于包的发布格式有多种选项,其中有一个选项是 bdist_rpm,以这个选项发布出来的包是 rpm 的包格式。 python setup.py bdist_rpm 。对于rpm 这种格式,你需要使用 yum 或者 rpm 来安装。
    使用 yum 安装:yum install pkg
    使用 rpm 安装:rpm -ivh pkg

使用 get-pip.py 安装 (推荐)

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
pip -V    // 查看 pip 版本以及 Python 版本
// pip 20.1.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)


如果安装的是 python3, 则 python3 默认安装的有 pip3 ,不需要再自己安装 pip3。
pip3 安装在 python3 路径下的 bin 目录里面

如果没有,则 执行 python3 get-pip.py
pip3 -V    // 查看 pip 版本以及 Python 版本
// pip 20.1.1 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)

查看 离线帮助

执行命令:python -m pydoc -p 5200

命令行 执行 Python 代码

示例:python -c "import hashlib;print(hashlib.md5('hello').hexdigest())"

在执行任意代码前自动念一段平安经

如果对 Linux 比较熟悉,就会知道,当你在使用 SSH 远程登陆 Linux 服务器的时候?会读取 .bash_profile 文件加载一些环境变量。.bash_profile 可以视其为一个 shell 脚本,可以在这里写一些 shell 代码达到你的定制化需求。

而在 Python 中,也有类似 .bash_profile 的文件,这个文件一般情况下是不存在的。我们需要新建一个用户环境目录,这个目录比较长,不需要你死记硬背,使用 site 模块的方法就可以获取,然后使用 mkdir -p 命令创建它。

在这个目录下,新建一个 usercustomize.py 文件,注意名字必须是这个,换成其他的可就识别不到啦。usercustomize.py 的内容如

msg = r"""

                    _ooOoo_
                   o8888888o    __________________________________
                   88" . "88   |  爬虫工程师平安  后端工程师平安  |
                   (| -_- |)   |  数据分析师平安  自动化运维平安  |
                    O\ = /O    <__________________________________|
                ____/`---'\____
              .   ' \\| |// `.
               / \\||| : |||// \
             / _||||| -:- |||||- \
               | | \\\ - /// | |
             | \_| ''\---/'' | |
              \ .-\__ `-` ___/-. /
           ___`. .' /--.--\ `. . __
        ."" '< `.___\_<|>_/___.' >'"".
       | | : `- \`.;`\ _ /`;.`/ - ` : | |
         \ \ `-. \_ __\ /__ _/ .-` / /
 ======`-.____`-.___\_____/___.-`____.-'======
                    `=---='

 .............................................
          佛祖保佑             永无BUG
"""
print(msg)

3、使用 pip

pip 帮助

用法:
  pip <命令> [选项]

命令:
  install                     安装包。
  lock                        生成锁文件。
  download                    下载包。
  uninstall                   卸载包。
  freeze                      以 requirements 格式输出已安装的包。
  inspect                     检查 python 环境。
  list                        列出已安装的包。
  show                        显示已安装包的信息。
  check                       验证已安装的包是否具有兼容的依赖关系。
  config                      管理本地和全局配置。
  search                      在 PyPI 上搜索包。
  cache                       检查和管理 pip 的 wheel 缓存。
  index                       检查包索引中可用的信息。
  wheel                       根据您的需求构建 wheels。
  hash                        计算包存档的哈希值。
  completion                  用于命令补全的辅助命令。
  debug                       显示有助于调试的信息。
  help                        显示命令帮助。

通用选项:
  -h, --help                  显示帮助。
  --debug                     让未处理的异常传播到主子程序外部,而不是记录到 stderr。
  --isolated                  以隔离模式运行 pip,忽略环境变量和用户配置。
  --require-virtualenv        只允许 pip 在虚拟环境中运行;否则退出并显示错误。
  --python <python>           使用指定的 Python 解释器运行 pip。
  -v, --verbose               增加输出。该选项可累加,最多可使用 3 次。
  -V, --version               显示版本并退出。
  -q, --quiet                 减少输出。该选项可累加,最多可使用 3 次(对应 WARNING、ERROR 和 CRITICAL 日志级别)。
  --log <路径>                详细追加日志的路径。
  --no-input                  禁用输入提示。
  --keyring-provider <keyring_provider>
                              如果允许用户输入,则启用通过 keyring 库查找凭据。指定要使用的机制 [auto, disabled, import, subprocess]。(默认:auto)
  --proxy <代理>              以 scheme://[user:passwd@]proxy.server:port 格式指定代理。
  --retries <重试次数>        建立新 HTTP 连接的最大尝试次数。(默认:5)
  --timeout <秒>              设置套接字超时(默认 15 秒)。
  --exists-action <操作>      路径已存在时的默认操作:(s)witch 切换、(i)gnore 忽略、(w)ipe 清除、(b)ackup 备份、(a)bort 中止。
  --trusted-host <主机名>     将此主机或主机:端口对标记为受信任,即使它没有有效的或任何 HTTPS。
  --cert <路径>               PEM 编码的 CA 证书包路径。如果提供,将覆盖默认值。更多信息请参见 pip 文档中的"SSL 证书验证"。
  --client-cert <路径>        SSL 客户端证书路径,包含私钥和证书的单个 PEM 格式文件。
  --cache-dir <目录>          将缓存数据存储在 <目录> 中。
  --no-cache-dir              禁用缓存。
  --disable-pip-version-check
                              不定期检查 PyPI 以确定是否有新版本的 pip 可供下载。使用 --no-index 时隐含此选项。
  --no-color                  抑制彩色输出。
  --use-feature <功能>        启用可能向后不兼容的新功能。
  --use-deprecated <功能>     启用将在未来被移除的已弃用功能。
  --resume-retries <恢复重试次数>
                              恢复或重新开始不完整下载的最大尝试次数。(默认:0)

如果想看 pip 中某个 命令的帮助,例如 pip list ,可以使用: pip list -h

root@kali:~$ pip list -h

Usage:
  pip list [options]

Description:
  List installed packages, including editables.

  Packages are listed in a case-insensitive sorted order.

List Options:
  -o, --outdated              List outdated packages
  -u, --uptodate              List uptodate packages
  -e, --editable              List editable projects.
  -l, --local                 If in a virtualenv that has global access, do not list globally-installed packages.
  --user                      Only output packages installed in user-site.
  --pre                       Include pre-release and development versions. By default, pip only finds stable versions.
  --format <list_format>      Select the output format among: legacy (default), columns, freeze or json.
  --not-required              List packages that are not dependencies of installed packages.

Package Index Options (including deprecated options):
  -i, --index-url <url>       Base URL of Python Package Index (default https://pypi.python.org/simple). This should
                              point to a repository compliant with PEP 503 (the simple repository API) or a local
                              directory laid out in the same format.
  --extra-index-url <url>     Extra URLs of package indexes to use in addition to --index-url. Should follow the same
                              rules as --index-url.
  --no-index                  Ignore package index (only looking at --find-links URLs instead).
  -f, --find-links <url>      If a url or path to an html file, then parse for links to archives. If a local path or
                              file:// url that's a directory, then look for archives in the directory listing.
  --process-dependency-links  Enable the processing of dependency links.

示例:  pip list --outdata   查看需要更新的 python 包

pip cache purge                  清除所有缓存
pip cache remove package-name    清除指定软件包的缓存
pypi 清华源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
pip --no-cache-dir -i  国内源 install  包名

安装 到 用户环境

当在机器上并没有 root 权限时,可以使用 pip install --user pkg 将包安装在你的用户环境中,该用户环境与全局环境并不冲突,并且多用户之间相互隔离,互不影响。

# 在全局环境中未安装 requests
[root@localhost ~]$ pip list | grep requests
[root@localhost ~]$ su - wangbm

# 由于用户环境继承自全局环境,这里也未安装
[wangbm@localhost ~]$ pip list | grep requests
[wangbm@localhost ~]$ pip install --user requests
[wangbm@localhost ~]$ pip list | grep requests
requests (2.22.0)
[wangbm@localhost ~]$

# 从 Location 属性可发现 requests 只安装在当前用户环境中
[wangbm@localhost ~]$ pip show requests
---
Metadata-Version: 2.1
Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
Installer: pip
License: Apache 2.0
Location: /home/wangbm/.local/lib/python2.7/site-packages
[wangbm@localhost ~]$ exit
logout

# 退出 wangbm 用户,在 root 用户环境中发现 requests 未安装
[root@localhost ~]$ pip list | grep requests
[root@localhost ~]$

pip 常用 命令

安装包:pip install xxx

通过豆瓣源安装包:pip install -i https://pypi.douban.com/simple xxx

卸载包:pip uninstall xxx

查看包的信息:pip show xxx

检查需要更新的包:pip list --outdated

升级包:pip install --upgrade xxx

冻结当前环境,生成安装的包的列表文件:pip freeze > requirements.txt

通过包的列表文件安装:pip install -r requirements.txt

查看一个包的依赖包

# 查看单个包的详细信息,包括依赖
pip show package_name

# 示例
pip show requests

# 查看包的详细信息(包括依赖)
pip show --verbose package_name

使用 pipdeptree 工具,首先安装 pipdeptree:pip install pipdeptree

# 查看所有包的依赖树
pipdeptree

# 查看特定包的依赖
pipdeptree -p package_name

# 以图表形式显示依赖关系
pipdeptree --graph-output svg > dependencies.svg

使用 requirements-tools

# 安装工具
pip install pip-tools

# 生成依赖文件
pip-compile requirements.in

推荐方法

  • 快速查看: 使用 pip show package_name
  • 详细依赖树: 使用 pipdeptree
  • 可视化: 使用 pipdeptree --graph-output

这些方法可以帮助你全面了解 Python 包的依赖关系,便于包管理和解决依赖冲突问题。

使用 豆瓣源、清华源

清华,仅支持 HTTPS:https://pypi.tuna.tsinghua.edu.cn/simple/

清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

阿里,HTTP 和 HTTPS 均支持

        :http://mirrors.aliyun.com/pypi/simple/
        :https://mirrors.aliyun.com/pypi/simple/

豆瓣,HTTP 和 HTTPS 均支持
        :http://pypi.doubanio.com/simple/
        :https://pypi.doubanio.com/simple/

pip 临时使用

示例:python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
示例:pip install robobrowser -i http://pypi.doubanio.com/simple/

设为默认(永久修改 )

示例:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

Linux下修改 ~/.pip/pip.conf (没有就创建,文件夹要加 “.”,表示是隐藏文件夹)。内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

windows 下是 C:\Users\用户名\pip\pip.ini 内容同上。

如果想配置多个镜像源平衡负载,可在已经替换 index-url 的情况下通过以下方式继续增加源站:

pip config set global.extra-index-url "<url1> <url2>..."

请自行替换引号内的内容,源地址之间需要有空格。

可用的 pypi 源列表(校园网联合镜像站):https://mirrors.cernet.edu.cn/list/pypi

正确且优雅的装包

使用 pip 来安装第三方的模块时,通常会使用这样的命令:pip install xxx 。此时如果你的环境中有 Python2 也有 Python 3,那你使用这条命令安装的包是安装 Python2 呢?还是安装到 Python 3 呢?就算你的环境上没有安装 Python2,那也有可能存在着多个版本的 Python 吧?比如安装了 Python3.8,也安装了 Python3.9,那你安装包时就会很困惑,我到底把包安装在了哪里?使用下面命令去安装,就可以安装到对应的环境中。

在python2中安装:   python -m pip install requests
在python3.8中安装:python3.8 -m pip install requests
在python3.9中安装:python3.9 -m pip install requests

通常情况下,如果同时安装了python2.x和python3.x 就会有两个pip。一个pip2一个pip3。如果 pip 版本过低,需要升级时,正确升级对应 python 解释器的 pip ( 如果有多个 Python 环境,则需要加上 python解释器的版本号)python3.9 -m pip install --upgrade pip

注意 ( 大坑 ):sudo 和 非sudo 执行 pip install 有时候安装目录不一样

        python3.9 -m pip install --upgrade pip
        sudo python3.9 -m pip install --upgrade pip

强制升级所有包

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

  • pip list --outdated --format=freeze:列出所有已安装但版本不是最新的包。
  • grep -v '^\-e':排除可编辑安装的包,这些通常是通过本地路径或VCS链接安装的包。
  • cut -d = -f 1:使用 = 作为分隔符,仅获取包名。
  • xargs -n1 pip install -U:将每个包名单独传递给 pip install -U 命令,进行升级。

4、site-packages 和 dist-packages

有些包是安装在 site-packages 下,而有些包安装在 dist-packages 下。dist-packages 其实是 debian 系的 Linux 系统(如 Ubuntu)才特有的目录,当使用 apt 去安装的 Python 包会使用 dist-packages,而使用 pip 或者 easy_install 安装的包还是照常安装在 site-packages 下。Debian 这么设计的原因,是为了减少不同来源的 Python 之间产生的冲突。

查看 site-package 所在目录 

在 Python 交互式 Shell 中,输入以下代码以获取 site-packages 路径:

import site
print(site.getsitepackages())

from distutils.sysconfig import get_python_lib
print(get_python_lib())

查看 Python 解释器的绝对路径

import sys 
print(sys.executable)

查看当前 lib 路径

>>> import sys
>>> print(sys.path)

>>> import sys
>>> from pprint import pprint
>>> pprint(sys.path)

执行命令:python -c "print('\n'.join(__import__('sys').path))"

执行命令:python -m site

查看 Python 环境信息:python -m sysconfig

5、pipx

虽然 python 自带的 pip 工具提供了丰富的安装与管理功能,同时在 virtualenv 的帮助下并不是太担心 Python 的版本升级会对开发环境产生太大的影响。但是,我们通过 pip 安装的 Python 实用工具,在版本升级的过程中并不能幸免。除非我们单独设置独立的,专门用于安装这些工具的虚拟环境。但是,每次安装都需要切换到虚拟环境,未免显得过于繁琐。难道就不能更给力一些嘛~~答案当然是肯定的。pipx 就是为了解决这样的困扰而诞生的。

pipx 可以在隔离环境中安装和运行Python应用程序。它的主要优势在于可以将每个工具安装在一个隔离的虚拟环境中,同时又可以全局调用这些工具,既解决了版本冲突的问题,又保持了系统的整洁。

核心概念

  • 虚拟环境:pipx 会为每个安装的工具创建一个独立的虚拟环境。
  • 全局可用:尽管工具被安装在独立的虚拟环境中,但 pipx 会创建一个全局可访问的命令链接,使得你可以像平常一样使用这些工具。

pipx 的工作原理可以简化为以下几个步骤:

  • 创建一个新的虚拟环境。
  • 在这个虚拟环境中安装指定的命令行工具。
  • 将工具的可执行文件链接到全局环境,使其可全局调用。

这样做的好处是,每个工具都在其独立的环境中运行,不会干扰其他工具和项目的依赖。

安装:https://github.com/pypa/pipx

一个绝佳的包管理器 pipx:https://blog.youkuaiyun.com/pythondh1/article/details/139227698

6、Python 包管理工具 PDM

PDM 是一个现代 Python 包和依赖项管理器,支持最新的 PEP 标准。但它不仅仅是一个包管理器。它在各个方面提升了您的开发工作流程。最显着的好处是它以类似的方式安装和管理软件包,根本不需要创建虚拟环境,灵活而强大的插件系统。PDM 需要 python 3.8 或更高版本。

pypi :https://pypi.org/project/pdm/

安装:pip install pdm

更新 PDM 版本:pdm self update

官网文档

初始化 PDM

执行 pdm init 就会开始初始化,初始化的时候,会让你选择项目的一些信息

  • 是否要上传 PyPI
  • 依赖的 Python 版本
  • License 类型
  • 作者信息
  • 邮箱信息

完成之后,PDM 会将你的选择以 toml 格式写入 pyproject.toml 配置文件中。

其他方案迁移到 pdm

pdm 足够好用,也足够开放,如果你当前使用的是其他的包管理器,比如 pipenv ,poetry,或者还在用最原始的 requirements.txt ,你也可以很方便的迁移到 pdm 中来:

  • 使用 pdm import -f {file} 无需初始化,直接转换
  • 执行 pdm init 或者 pdm install 的时候,会自动识别你当前的依赖情况并转换

pdm 迁移到其他方案

pyproject.toml 和 pdm.lock是 pdm 的两个核心文件。

  • 将 pyproject.toml 转成 setup.py:pdm export -f setuppy -o setup.py
  • 将 pdm.lock 转成 requirements.txt:pdm export -o requirements.txt

PDM 用法

pdm 有非常多的命令,使用 -h 可以看到帮助菜单

安装包:pdm add requests

查看包的详情:pdm show

查看包:pdm list --graph

pdm list 还有两个选项:

  • --freeze:以 requirements.txt 的格式列出已安装的包
  • --json:以 json 的格式列出已安装的包,但必须与 --graph 同时使用

删除包:pdb remove requests

项目配置:pdm config

想要修改的话,只要加 key 和 value 做为参数即可,以修改 pypi 镜像代理为例

现在改成 阿里源,只需要执行如下命令

pdm config 配置 查阅:https://pdm.fming.dev/configuration/

运行命令

在 pdm 的环境中执行命令或者项目,可以使用 run 命令,若是执行项目时,有诸多参数,可以在 pyproject.toml 配置命令别名。

查看环境

使用 info 命令,可以查看当前项目的环境信息

更新包

更新所有包:pdm update

更新某个包:pdm update <pkg>

--save-compatible:项目依赖可兼容的版本
--save-wildcard:保存通配符版本(暂不明白)
--save-exact:保存有指定确切版本的包
--save-minimum:保持最小版本的包
--update-reuse:尽量只更新命令行中指定的包,其依赖包能不更新则不更新
--update-eager:更新某个包顺带更新其依赖包(递归升级)
--prerelease:允许提前释放
--unconstrained:忽略包版本的约束,可将包升级至最新版本
--top:仅更新有在 pyproject.toml 的包
--dry-run:试运行,而不去修改 lock 文件
--no-sync:只更新 lock 文件,但不更新包

如果依赖包有设置分组,还可以指定分组进行更新:pdm update -G security -G http
也可以指定分组更新分组里的某个包:pdm update -G security cryptography
更新所有的 dev 依赖:pdm update -d    # -d 指定 dev 依赖
更新 dev 依赖下某个分组的某个包:pdm update -dG test pytest
同样地,也可以指定 --prod 或者 --production 升级非 dev (即生产)的包。

切换 py

在初始化 pdm 项目时,就已经选定了当前的 Python 版本和可用的 Python 版本范围,后面如果想更改,可以使用 use 命令,但版本要受之前设定的版本范围约束。

假设允许范围是 python 3.9+,当前使用的是 python 3.10,可以直接切换过去。

命令:pdm use python3.9

命令别名

在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。

[tool.pdm.scripts] 有两种形式

# 第一种
[tool.pdm.scripts]
start = "python main.py"

# 第一种
[tool.pdm.scripts]
start = {cmd = "python main.py"}

但若想在参数中加注释,就必须得使用第二种方法,例如这样

[tool.pdm.scripts]
start = {cmd = [
    "flask",
    "run",
    # Important comment here about always using port 54321
    "-p", "54321"
]}

除了 cmd 之外,还有两个参数。

一个是 shell 参数,从输出来看你应该和看出和 cmd 的区别,和 subprocess.Popen() with shell=True 差不多一个意思

个是 env_file 参数,可以指定配置环境变量的文件

[tool.pdm.scripts]
start.cmd = "flask run -p 54321"
start.env_file = ".env"

如果想要把这个环境变量的文件不仅限于某个命令,而是 pdm run 全局,可以这样配置

[tool.pdm.scripts]
_.env_file = ".env"

加 --list 或者 -l可以查看所有设置的快捷别名

对于每一个快捷命令,都可以设置 pre 和 post 命令:

  • pre 命令:在每次快捷命令执行前会执行
  • post 命令:在每次快捷命令执行后会执行

[tool.pdm.scripts]
pre_compress = "{{ Run BEFORE the `compress` script }}"
compress = "tar czvf compressed.tar.gz data/"
post_compress = "{{ Run AFTER the `compress` script }}"

将包安装到系统级别的site-packages目录,通常意味着将一个Python安装为所有用户的共享包。在Linux和macOS系统中,这通常意味着将包安装Python的系统安装目录中,而在Windows系统中,则是安装Python安装目录下。以下是在不同操作系统中将包安装到系统site-packages目录的一般步骤: 对于**Linux和macOS**: 1. 确定你的系统Python路径。可以通过运行`which python`或`which python3`来查看Python解释器的位置。 2. 找到site-packages目录的路径。通常是`/usr/lib/pythonX.X/site-packages`(对于Python 2.x)或`/usr/lib/pythonX.X/dist-packages`(对于Python 3.x),其中X.X是Python的版本号。 3. 使用管理员权限(可能需要使用`sudo`)运行安装命令。例如,如果你正在使用pip安装一个包,命令如下: ```bash sudo pip install 包名 ``` 或者,如果你正在使用setuptools直接从源代码安装,命令如下: ```bash sudo python setup.py install ``` 对于**Windows**: 1. 打开命令提示符(以管理员身份运行)。 2. 找到site-packages目录的路径,通常是`C:\PythonXY\Lib\site-packages`,其中XY是Python的版本号。 3. 使用pip安装包,并指定安装目录。命令如下: ```bash pip install 包名 -t "C:\PythonXY\Lib\site-packages" ``` 或者,如果你正在从源代码安装,可以使用: ```bash python setup.py install --prefix="C:\PythonXY" ``` 请注意,在安装系统级别的包时,通常需要管理员权限,并且要特别小心,因为错误的操作可能会影响系统Python环境的稳定性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值