pip/conda/mamba安装拓展

人生活的就是个过程,无悔就是最高境界!


Conda 是⼀个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。Conda 主要是为 Python 程序创建的,适⽤于 Linux,OS X 和Windows,也可以打包和分发其他软件,如R和Scala。

1. conda配置镜像

Conda的默认配置属于开箱即用的类型,但如果我们想要更好⽤,还有⼀些设定需要注意。

Conda默认的包频道是Anaconda公司的默认频道。另外还存在⼀个开源频道:conda-forge。condaforge的包往往⽐官⽅更新更快,也更全,通常我们会直接把频道加⼊到conda的默认设置⾥。对于其他自己维护的频道,⽐如pytorch,如果需要,我们也可以自行添加。

生成condarc配置文件;
conda config --add channels conda-forge
conda config --append channels pytorch

另外,如果Conda在国内更新很慢,可以搜索anaconda清华源添加清华大学的国内镜像进行包的更新。

显示目前设置的所有镜像源,在执行conda config 命令的时候,会在当前用户目录下创建 .condarc 文件,可以查看更换源前后该文件内容的变化:

conda config --show-sources

删除安装源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

换回默认源
conda config --remove-key channels

1.1 清华大学开源软件镜像站

https://mirrors.sjtug.sjtu.edu.cn/

channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

1.2上海交通大学开源软件镜像站

https://mirrors.sjtug.sjtu.edu.cn/

channels:
  - defaults
show_channel_urls: true
channel_alias: https://anaconda.mirrors.sjtug.sjtu.edu.cn/
default_channels:
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/main
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/free
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/mro
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/msys2
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/pro
  - https://anaconda.mirrors.sjtug.sjtu.edu.cn/pkgs/r
custom_channels:
  conda-forge: https://anaconda.mirrors.sjtug.sjtu.edu.cn/conda-forge
  soumith: https://anaconda.mirrors.sjtug.sjtu.edu.cn/cloud/soumith
  bioconda: https://anaconda.mirrors.sjtug.sjtu.edu.cn/cloud/bioconda
  menpo: https://anaconda.mirrors.sjtug.sjtu.edu.cn/cloud/menpo
  viscid-hub: https://anaconda.mirrors.sjtug.sjtu.edu.cn/cloud/viscid-hub
  atztogo: https://anaconda.mirrors.sjtug.sjtu.edu.cn/cloud/atztogo

1.3 北京外国语大学开源软件镜像站

https://mirrors.bfsu.edu.cn/
注:强烈推荐!!!2020-05-02 上线,清华大学开源软件镜像站的姐妹站,下载体验极佳,再也不用忍受清华源永远下不完的 pytorch 了。

channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.bfsu.edu.cn/anaconda
default_channels:
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/pro
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud
  msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud
  bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
  menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
  pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud



channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud
  msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud
  bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
  menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
  pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud

1.4 Linux下环境配置

CondaHTTPError: HTTP 000 CONNECTION FAILED for url
https://blog.csdn.net/ada0915/article/details/78529877

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes


channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
show_channel_urls: true

# 2020.12.20 巨快源
channels:
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/pro
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
show_channel_urls: true
ssl_verify: false

# Linux 2022.4.10 创建py2的虚拟环境
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - defaults
show_channel_urls: true

2. pip换源

pip国内的一些镜像:
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

临时使用某个源安装版本:
pip install -i https://pypi.douban.com/simple torch==1.5.0

3. mamba 安装拓展(极速)

mamba 非常强大,可以在linux/win10下安装;
给conda换好源后,

安装mamba
conda install mamba
conda install mamba -c conda-forge
conda install mamba -n base -c conda-forge

# 查看package
mamba repoquery search busco

# 查看安装包所需依赖
mamba repoquery depends busco

mamba 安装拓展
 mamba install bs4 lxml selenium pyppeteer
  All requested packages already installed
                  __    __    __    __
                 /  \  /  \  /  \  /  \
                /    \/    \/    \/    \
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  / \   / \   / \   / \  \____
             /  /   \_/   \_/   \_/   \    o \__,
            / _/                       \_____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝
        mamba (0.7.8) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████
Looking for: ['bs4', 'lxml', 'selenium', 'pyppeteer']


Linux下
将以上配置文件写在~/.condarc中

vim ~/.condarc
channels:
- https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
- https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true

配置信息保存在 ~/.condarc 里,cat ~/.condarc即可查看!

3. 环境重建

① 环境迁移

如果我们想要把⼀个conda环境和对应版本的包迁移到别的机器上,那就首先需要导出环境:

conda activate py37 # 激活要导出的环境
conda env export > environment.yml # 导出环境配置,此种方法只能导出相同系统,如 windows机器的配置只能导出给windows使用,不能给linux使用
pip freeze > requirement.txt # 也可以用pip导出,此种方法不限制机器

然后在新机器上重建环境:

conda env create -f environment.yml # 直接利用conda重建 # 或是先安装环境,再用pip重建
conda create -n py37 python=3.7 -y
pip install -r requirement.txt

② 离线环境重建

如果出于某些原因需要在离线的环境⼯作,Python的环境配置会是⼀个很头痛的问题。但conda其实可以很⽅便的帮我们维护⼀整个相互兼容的环境。这种情况下,⾸先,我们需要找到conda的配置⽂件.condarc,通常它会位于:

macOS: /Users/Username
Linux: ~/.condarc
Windows: C:\Users\Username

如果没有看⻅.condarc配置文件,就运行一次conda config。

然后,我们需要在.condarc里修改conda缓存包的地址pkgs_dirs,把这个地址变为我们想要存放下载的python包的地址,在离线的机器上我们也进⾏同样的操作来指定conda的缓存路径。把conda缓存下来的包导入到离线环境的缓存路径下,是建立⼀个完整的python环境的关键。

pkgs_dirs:
- C:\conda-pkgs-cache

在改好.condarc配置文件后,我们就可以下载我们想要的包了,不过此时,需要带上⼀个关键的参数: --download-only

# 通过创建环境的方式下载所有想要的包
conda create -n py36 anaconda pytorch tensorflow lightgbm catboost tqdm black pipreqs python=3.6 --download-only

# 直接下载并缓存对应的包
conda install tensorflow-gpu=1.15 py-xgboost --download-only

在下载后,将之前设定的conda缓存⽬录上传到离线环境中,并在离线环境中也设定.condarc中conda

缓存目录为对应的目录。此时运行:

# 利用缓存创建环境
conda create -n offline36 anaconda pytorch tensorflow lightgbm catboost tqdm black pipreqs python=3.6 --use-index-cache --offline

# 利用缓存安装包
conda install tensorflow-gpu=1.15 py-xgboost --use-index-cache --offline

就可以只用conda缓存中的文件,⽆需联网,就能成功安装对应库到离线环境中了。

4. 创建虚拟环境

安装软件前,先设置一个小环境,不要直接在自己账户的当前环境内安装软件;

conda create -n rna
# 创建一个小环境名为rna
conda install python=2
# 安装python 2版本

# 以上两句话可以等同于一句命令:conda create -n rna python=2

查看小环境

conda info -e
conda info --envs
conda env list    # 都是来查看已经存在小环境名的

# 运行后如下:rna即为刚刚建立成功的小环境名
$ conda info -e
# conda environments:
#
base                  *  /home/you/miniconda2
rna                      /home/you/miniconda2/envs/rna

# **进入小环境**
source activate rna  #激活小环境名为rna的环境

# 退出环境
conda deactivate  #: linux下conda退出小环境命令

# **移除小环境**
conda env remove --name bio-env       #:删除小环境及里面的内容

5.安装软件

5.1 查找软件

5.2 安装软件

第一步:先从bioconda镜像查看软件名具体是什么?一个字母都不能错
第二步:conda install 软件名
第三步:成功调取软件帮助文档==确定安装成功
这里有点类似R包的安装,装后需要library()一下,才能确认安装成功
安装方法:conda install -y sra-tools trim-galore

参数解释:-y要不要均可,是问你同不同意安装,不要的时候,需要手动输入一个y,自己尝试后就理解了这句话含义;sra-tools trim-galore安装两款软件,默认安装最新版; 注意 trim-galore 一个字都不能错,一个字都不能错,重要的事情说三遍!

指定软件安装版本
conda install numpy=1.11:即安装能模糊匹配到numpy版本为1.11
conda install numpy==1.11:即精确安装numpy为1.11的版本

Constraint type Specification Result
Fuzzy numpy=1.11 1.11.0, 1.11.1, 1.11.2, 1.11.18 etc.
Exact numpy==1.11 1.11.0
Greater than or equal to "numpy>=1.11" 1.11.0 or higher
OR "numpy=1.11.1 1.11.3" 1.11.1, 1.11.3
AND "numpy>=1.8,<2" 1.8, 1.9, not 2.0

5.3 更新软件

conda update conda:更新conda
conda update bwa:更新bwa;前提是已经安装成功bwa

5.4 查看已安装软件

conda list:在当前小环境下,列举所有安装软件。

示例:
source activate rna
conda list
列举rna小环境内安装的所有软件

pip安装

先安装python,才能使用pip安装python的软件,如pip install multiqc

pip install scrapy-redis --use-feature=2020-resolver   # 2020.11.11 安装

6. miniconda安装失败

  • 删除安装目录,如果安装到了/home/you/miniconda2里,执行rm -r /home/you/miniconda2
  • 删掉~/.bashrc最后几行conda写入的信息(# added by Miniconda2 4.5.12 installer下面几行一般都是),如果没有# added by Miniconda2 4.5.12 installer的话,即表明conda配置的信息没写入成功

然后按照上述步骤重新安装!

6.1 conda网络错误

报错如下;

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/bioconda/linux-64/homer-4.9.1-pl5.22.0_5.tar.bz2>Elapsed: -
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.

1. 检查网络是否已经链接;
实际上,我已经设置好了镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
conda install -y -c bioconda homer

人为指定channel 可以解决bug

conda install -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda homer

6.2 conda 安装软件经常冲突

事实上不可能有十全十美的工具,conda非常简易的管理了多个软件流程,那么必然也会有解决不了的事情,必然同一个流程的两个python软件基于不同版本的python包,就尴尬了。

Solving environment: failed
UnsatisfiableError: The following specifications were found to be in conflict: 
 - rsem
Use "conda info <package>" to see the dependencies for each package.

没什么好的办法,只能说把冲突的工具安装到不同的子环境。

Solving environment: failed
PackagesNotFoundError: The following packages are not available from current channels: 
 - salmon 
 - boost=1.64 
 - salmon 
 - libcxx==4.0.0

5.3 配置镜像出错

conda: command not found
# 表明环境变量里找不到conda这个软件
# 出错原因:.bashrc里没有配置conda的PATH或者配置过但是没有source ~/.bashrc
# 检验方法:运行echo $PATH,查看是否含有conda安装路径

Warning: 'https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge' already in 'channels' list, moving to the top
# 表明之前已经运行过这句代码
# 复制镜像配置语句时复制错误,需要重新配置时,需要删除镜像配置文件
rm ~/.condarc 
# 然后重新配置,参考miniconda配置镜像
总结

一步安装conda并且配置好一个ngs组学环境

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda2-latest-Linux-x86_64.sh
# miniconda2软件下载成功

bash Miniconda2-latest-Linux-x86_64.sh
# 遇到yes/no输入yes,其他直接enter搞定
source ~/.bashrc

conda --help
# miniconda2安装成功,并成功配置好环境变量
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
# 配置镜像成功

conda create -n rna python=2# 创建小环境成功,并成功安装python2版本
# 每建立一个小环境,都要装一个python=2的软件作为依赖

source activate rna
# 成功激活进入小环境,即可安装软件
conda install -y fastqc
# 出现三个done,即表示安装成功,否则重新提交命令
fastqc --help
# 成功出现帮助文档,fastqc软件安装成功

conda install -y sra-tools# 出现三个done,即表示安装成功,否则重新提交命令prefetch --help
# 成功出现帮助文档,sra-tools软件安装成功
# 安装什么软件,并不等于调用什么命令--help

source deactivate
# 成功退出rna小环境
# 或直接退出当前账户

---------------------------------------------------------------------------------------
报错1
将https改为http即可。

生信环境配置方法改进版——安装简易conda_mamba

mamba 是一个快速的跨平台包管理工具,基于 conda 且与 conda 完全兼容。所谓基于 conda 就是 conda 能干啥它就干啥,所谓兼容就是 conda 怎么用它就怎么用,而缺点就是贼快。

1.用 conda-forge 的 channel 进行安装 ,无报错就成功;
conda install mamba-c conda-forge 

2.报错换种方式安装mamba
conda install -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda homer
conda install -y mamba        
#去掉 -y 也可以试一试,安装mamba巨慢;
测试安装成功;安装上mamba,就可以快速的安装各种软件了;

mamba

机器学习库安装

1. sklearn安装:

sklearn是机器学习中一个常用的python第三方模块,对常用的机器学习算法进行了封装
其中包括:
1.分类(Classification)
2.回归(Regression)
3.聚类(Clustering)
4.数据降维(Dimensionality reduction)
5.常用模型(Model selection)
6.数据预处理(Preprocessing)

两种安装方式:
使用 pip
pip install -U scikit-learn

或 conda
conda install scikit-learn
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容