Anaconda 介绍、安装、使用及常用命令(macOS  Win10)

1. 初步认识 Anaconda

Anaconda 是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda 利用工具/命令 conda 来进行 package 和 environment 的管理,并且已经包含了Python和相关的配套工具。

这里先解释下conda、anaconda这些概念的差别,详细差别见下节。

  • conda
    conda 可以理解为一个工具,也是一个可执行命令,其核心功能是包管理环境管理。 包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。
  • anaconda
    anaconda 则是一个打包的集合,里面预装好了 conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。

进入下文之前,说明一下conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。

2. Anaconda、conda、pip、virtualenv的区别

2.1. Anaconda

Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。

2.2. conda

conda是包及其依赖项环境的管理工具。

  • 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

  • 适用平台:Windows, macOS, Linux

  • 用途:快速安装、运行和升级包及其依赖项;在计算机中便捷地创建、保存、加载和切换环境。

    如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——conda官方网站

  • conda为Python项目而创造,但可适用于上述的多种语言。

  • conda包和环境管理器包含于Anaconda的所有版本当中。

2.3. pip

  • pip是用于安装和管理软件包的包管理器
  • pip编写语言:Python。
  • Python中默认安装的版本:
    Python 2.7.9及后续版本:默认安装,命令为pip
    Python 3.4及后续版本:默认安装,命令为pip3

2.4 virtualenv

  • 用于创建一个独立的Python环境的工具。

  • 解决问题:

    1. 当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序?
    2. 如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
    3. 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
    4. 在共享主机时,无法在全局site-packages目录中安装包。
  • virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。

2.5. pip 与 conda 比较

2.5.1. 依赖项检查

  • pip:
    • 不一定会展示所需其他依赖包。
    • 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
  • conda:
    • 列出所需其他依赖包。
    • 安装包时自动安装其依赖项。
    • 可以便捷地在包的不同版本中自由切换。

2.5.2. 环境管理

  • pip:维护多个环境难度较大。
  • conda:比较方便地在不同环境之间进行切换,环境管理较为简单。

2.5.3. 对系统自带Python的影响

  • pip:在系统自带的Python包中 更新/回退版本/卸载 将影响其他程序。
  • conda:不会影响系统自带Python。

2.5.4. 适用语言

  • pip:仅适用于Python。
  • conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

2.6. conda与pip、virtualenv的关系

conda结合了pip和virtualenv的功能。

3. 安装 Anaconda

3.1. macOS

3.1.1. 系统环境

系统版本:macOS Mojave 10.14
已装 python:python2.7.10 python3.7.0
已装其他工具:pip pip3 qt5 pyqt5


python.png

others.png

3.1.2. 安装

  • 下载
    前往 anaconda官网,选择版本(建议 Python 3.7),下载 :
    anaconda_mac.png

    下载完成,得到安装器软件包:
    pkg.png
  • 开始安装
    双击安装包,开始安装:


    image.png

    点击继续。


    image.png

    点击继续。
    read.png
  • 阅读重要信息(不关注细节的可忽略,直接下一步):

Anaconda is the most popular Python data science platform. See https://www.anaconda.com/downloads/.
By default, this installer modifies your bash profile to activate the base environment of Anaconda3 when your shell starts up. To disable this, choose "Customize" at the "Installation Type" phase, and disable the "Modify PATH" option. If you decline this option, the executables installed by this installer will not be available on PATH. You will need to use the full executable path to run commands, or otherwise initialize the base environment of Anaconda3 on your own.
To install to a different location, select "Change Install Location..." at the "Installation Type" phase, then choose "Install on a specific disk...", choose the disk you wish to install on, and click "Choose Folder...". The "Install for me only" option will install Anaconda3 to the default location, ~/anaconda3.
The packages included in this installation are:

  • alabaster 0.7.11
  • anaconda 5.3.0
  • anaconda-client 1.7.2
  • anaconda-navigator 1.9.2
  • anaconda-project 0.8.2
  • appdirs 1.4.3
  • appnope 0.1.0
  • appscript 1.0.1
  • asn1crypto 0.24.0
  • astroid 2.0.4
  • astropy 3.0.4
  • atomicwrites 1.2.1
  • attrs 18.2.0
  • automat 0.7.0
  • babel 2.6.0
  • backcall 0.1.0
  • backports 1.0
  • backports.shutil_get_terminal_size 1.0.0
  • beautifulsoup4 4.6.3
  • bitarray 0.8.3
  • bkcharts 0.2
  • blas 1.0
  • blaze 0.11.3
  • bleach 2.1.4
  • blosc 1.14.4
  • bokeh 0.13.0
  • boto 2.49.0
  • bottleneck 1.2.1
  • bzip2 1.0.6
  • ca-certificates 2018.03.07
  • certifi 2018.8.24
  • cffi 1.11.5
  • chardet 3.0.4
  • click 6.7
  • cloudpickle 0.5.5
  • clyent 1.2.2
  • colorama 0.3.9
  • conda 4.5.11
  • conda-build 3.15.1
  • conda-env 2.6.0
  • constantly 15.1.0
  • contextlib2 0.5.5
  • cryptography 2.3.1
  • curl 7.61.0
  • cycler 0.10.0
  • cython 0.28.5
  • cytoolz 0.9.0.1
  • dask 0.19.1
  • dask-core 0.19.1
  • datashape 0.5.4
  • dbus 1.13.2
  • decorator 4.3.0
  • defusedxml 0.5.0
  • distributed 1.23.1
  • docutils 0.14
  • entrypoints 0.2.3
  • et_xmlfile 1.0.1
  • expat 2.2.6
  • fastcache 1.0.2
  • filelock 3.0.8
  • flask 1.0.2
  • flask-cors 3.0.6
  • freetype 2.9.1
  • get_terminal_size 1.0.0
  • gettext 0.19.8.1
  • gevent 1.3.6
  • glib 2.56.2
  • glob2 0.6
  • gmp 6.1.2
  • gmpy2 2.0.8
  • greenlet 0.4.15
  • h5py 2.8.0
  • hdf5 1.10.2
  • heapdict 1.0.0
  • html5lib 1.0.1
  • hyperlink 18.0.0
  • icu 58.2
  • idna 2.7
  • imageio 2.4.1
  • imagesize 1.1.0
  • incremental 17.5.0
  • intel-openmp 2019.0
  • ipykernel 4.9.0
  • ipython 6.5.0
  • ipython_genutils 0.2.0
  • ipywidgets 7.4.1
  • isort 4.3.4
  • itsdangerous 0.24
  • jbig 2.1
  • jdcal 1.4
  • jedi 0.12.1
  • jinja2 2.10
  • jpeg 9b
  • jsonschema 2.6.0
  • jupyter 1.0.0
  • jupyter_client 5.2.3
  • jupyter_console 5.2.0
  • jupyter_core 4.4.0
  • jupyterlab 0.34.9
  • jupyterlab_launcher 0.13.1
  • keyring 13.2.1
  • kiwisolver 1.0.1
  • lazy-object-proxy 1.3.1
  • libcurl 7.61.0
  • libcxx 4.0.1
  • libcxxabi 4.0.1
  • libedit 3.1.20170329
  • libffi 3.2.1
  • libgfortran 3.0.1
  • libiconv 1.15
  • libpng 1.6.34
  • libsodium 1.0.16
  • libssh2 1.8.0
  • libtiff 4.0.9
  • libxml2 2.9.8
  • libxslt 1.1.32
  • llvmlite 0.24.0
  • locket 0.2.0
  • lxml 4.2.5
  • lzo 2.10
  • markupsafe 1.0
  • matplotlib 2.2.3
  • mccabe 0.6.1
  • mistune 0.8.3
  • mkl 2019.0
  • mkl-service 1.1.2
  • mkl_fft 1.0.4
  • mkl_random 1.0.1
  • more-itertools 4.3.0
  • mpc 1.1.0
  • mpfr 4.0.1
  • mpmath 1.0.0
  • msgpack-python 0.5.6
  • multipledispatch 0.6.0
  • navigator-updater 0.2.1
  • nbconvert 5.4.0
  • nbformat 4.4.0
  • ncurses 6.1
  • networkx 2.1
  • nltk 3.3.0
  • nose 1.3.7
  • notebook 5.6.0
  • numba 0.39.0
  • numexpr 2.6.8
  • numpy 1.15.1
  • numpy-base 1.15.1
  • numpydoc 0.8.0
  • odo 0.5.1
  • olefile 0.46
  • openpyxl 2.5.6
  • openssl 1.0.2p
  • packaging 17.1
  • pandas 0.23.4
  • pandoc 1.19.2.1
  • pandocfilters 1.4.2
  • parso 0.3.1
  • partd 0.3.8
  • path.py 11.1.0
  • pathlib2 2.3.2
  • patsy 0.5.0
  • pcre 8.42
  • pep8 1.7.1
  • pexpect 4.6.0
  • pickleshare 0.7.4
  • pillow 5.2.0
  • pip 10.0.1
  • pkginfo 1.4.2
  • pluggy 0.7.1
  • ply 3.11
  • prometheus_client 0.3.1
  • prompt_toolkit 1.0.15
  • psutil 5.4.7
  • ptyprocess 0.6.0
  • py 1.6.0
  • pyasn1 0.4.4
  • pyasn1-modules 0.2.2
  • pycodestyle 2.4.0
  • pycosat 0.6.3
  • pycparser 2.18
  • pycrypto 2.6.1
  • pycurl 7.43.0.2
  • pyflakes 2.0.0
  • pygments 2.2.0
  • pylint 2.1.1
  • pyodbc 4.0.24
  • pyopenssl 18.0.0
  • pyparsing 2.2.0
  • pyqt 5.9.2
  • pysocks 1.6.8
  • pytables 3.4.4
  • pytest 3.8.0
  • pytest-arraydiff 0.2
  • pytest-astropy 0.4.0
  • pytest-doctestplus 0.1.3
  • pytest-openfiles 0.3.0
  • pytest-remotedata 0.3.0
  • python 3.7.0
  • python-dateutil 2.7.3
  • python.app 2
  • pytz 2018.5
  • pywavelets 1.0.0
  • pyyaml 3.13
  • pyzmq 17.1.2
  • qt 5.9.6
  • qtawesome 0.4.4
  • qtconsole 4.4.1
  • qtpy 1.5.0
  • readline 7.0
  • requests 2.19.1
  • rope 0.11.0
  • ruamel_yaml 0.15.46
  • scikit-image 0.14.0
  • scikit-learn 0.19.2
  • scipy 1.1.0
  • seaborn 0.9.0
  • send2trash 1.5.0
  • service_identity 17.0.0
  • setuptools 40.2.0
  • simplegeneric 0.8.1
  • singledispatch 3.4.0.3
  • sip 4.19.8
  • six 1.11.0
  • snappy 1.1.7
  • snowballstemmer 1.2.1
  • sortedcollections 1.0.1
  • sortedcontainers 2.0.5
  • sphinx 1.7.9
  • sphinxcontrib 1.0
  • sphinxcontrib-websupport 1.1.0
  • spyder 3.3.1
  • spyder-kernels 0.2.6
  • sqlalchemy 1.2.11
  • sqlite 3.24.0
  • statsmodels 0.9.0
  • sympy 1.2
  • tblib 1.3.2
  • terminado 0.8.1
  • testpath 0.3.1
  • tk 8.6.8
  • toolz 0.9.0
  • tornado 5.1
  • tqdm 4.26.0
  • traitlets 4.3.2
  • twisted 18.7.0
  • unicodecsv 0.14.1
  • unixodbc 2.3.7
  • urllib3 1.23
  • wcwidth 0.1.7
  • webencodings 0.5.1
  • werkzeug 0.14.1
  • wheel 0.31.1
  • widgetsnbextension 3.4.1
  • wrapt 1.10.11
  • xlrd 1.1.0
  • xlsxwriter 1.1.0
  • xlwings 0.11.8
  • xlwt 1.3.0
  • xz 5.2.4
  • yaml 0.1.7
  • zeromq 4.2.5
  • zict 0.1.3
  • zlib 1.2.11
  • zope 1.0
  • zope.interface 4.5.0

如上文所示,anaconda将安装很多包,其中标红的为目前我比较熟悉的包,如果不用anaconda,这些包得一个个手动安装,anoconda真是好用啊!

  • 继续安装


    image.png

    image.png

    选择“在特定的磁盘上安装...”,安装在根目录。(根据个人需求选择)


    image.png

    image.png

    点击“安装”。
    image.png

    image.png

    image.png

    image.png
  • 安装 Microsoft VSCode(可跳过)
    Anaconda has partnered with Microsoft to bring you Visual Studio Code. Visual Studio Code is a free, open source, streamlined cross-platform code editor with excellent support for Python code editing, IntelliSense, debugging, linting, version control, and more.
    Anaconda 同微软合作推出了 Visual Studio Code,Visual Studio Code 是一个免费、开源、流线型的跨平台代码编辑器,可以很好地支持python代码编辑、智能感知、调试、代码控制等。


    image.png

    点击“Install Microsoft VSCode”。
    需在线安装,网络不好,安装失败。


    image
  • 安装成功


    image.png

    到应用程序,打开 Anaconda Navigator ,会展示出已经安装好的其他常用应用,如:

  • Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。
  • Jupyter notebook :基于web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。
  • qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
  • spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。


    image.png

查看安装路径:


image.png

3.1.3. 配置

3.1.3.1. 环境变量

Anaconda 安装好后,会自动在 ~/.bash_profile 中添加 anaconda 的环境变量,如下:


image.png

因此只需要source一下即可。
anaconda安装之后,source之前,先看一下当前的python:
默认 python 为 python2:


image.png

使用 python3 需使用 python3 指令:
image.png

我们来source 一下:


image.png

默认 python 变为 python3,且是 anaconda 自带的 python3:
image.png
3.1.3.2. 修改conda镜像源

如不修改conda的镜像源,99.99%会报http链接失败的错误(网友踩坑经验)。
输入以下两条命令来添加清华源:

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

此时你的 ~ 目录下会生成隐藏文件 .condarc:


image.png

内容如下:


image.png

删除其中的第1行、第4行(建议只删第一行,原因请见3.1.3.3节),最终版本文件如下:
image.png

用命令

conda info 

查看当前配置信息,channel URLs 字段内容内容如下,即修改成功。


image.png

若未删除第4行,则还会有默认的镜像源:


image.png

3.1.3.3. python2 python3 切换

  • 创建python3.7环境(图形界面)
    image.png

    image.png

    image.png

    报错——当前镜像源获取不到python3.7的包:
    image.png

    解决方法:修改~/.condarc,增加 -defaults ,将默认镜像源添加进来:
    image.png

    保存退出,输入:
conda info

查看配置信息,默认镜像源已恢复:


image.png

重新创建python3.7环境,成功:


image.png

image.png

使用如下命令,查看当前有哪些环境:
conda info -e
image.png

星号表示当前激活的环境。
激活py37环境:

source activate py37
或
conda activate py37
image.png
  • 创建python2.7环境(命令行方式)
    输入以下命令,创建python2.7环境:
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7
image.png

创建成功:


image.png

Anaconda 图形界面也显示了 py27:


image.png

激活py27环境:

conda activate py27
image.png

3.2. Windows 10

前往 anaconda官网,选择版本(建议 Python 3.7),下载 :

anaconda_win.png

3.2.1. 安装

安装请参考 http://www.cnblogs.com/IT-LearnHall/p/9486029.html

3.2.2. 配置

3.2.2.1. 配置环境变量

右键“此电脑”,依次点击“属性”->"高级系统设置"->"环境变量",双击“用户变量“中的path:


image.png

点击”新建“,新增三个环境变量(注意第三个环境变量一定要加,否则创建环境或者安装包的时候会报错:CondaHTTPError: HTTP 000 CONNECTION FAILED for url):

C:\Users\sille\Anaconda3
C:\Users\sille\Anaconda3\Scripts
C:\Users\sille\Anaconda\Library\bin

点击确定。
打开终端,输入

conda --version

正确显示版本号,则环境变量设置成功:


image.png

3.2.2.2. 更改镜像源

同mac版,请见3.1.3.2.节。

3.2.2.3. (命令方式)创建 python3.7环境

查看当前有哪些环境:

conda info -e
或
conda info --envs

只有一个base环境:


zhi'yu

打开 Anaconda 图形界面,同样显示只有一个环境——base(root):


image.png

输入以下命令,创建python3.7环境:
conda create -n py37 python=3.7
或
conda create --name py37 python=3.7

失败了,提示当前镜像源找不到python3.7的包。


image.png

原因是:在上一节更改镜像源的时候,删掉了 -defaults 这一行,导致默认镜像源被去掉了,只保留了新增的清华镜像源,这一镜像源可能对于较新的包更新较慢。
解决方法:打开 C:\Users\用户名下的隐藏文件 .condarc,增加 -defaults 这一行,如下图所示。


image.png

输入命令,查看当前镜像源:
conda info

可见,默认镜像源已经添加进来:


image.png

再次执行命令,创建python3.7环境:

conda create -n py37 python=3.7
image.png

image.png

至此,python3.7环境已经创建完成。
打开 anaconda 图形界面,也可以看到刚创建的py37:


image.png

激活 py37环境:
activate py37

激活成功后,终端前面的括号中会显示环境名。
查看当前环境的python版本:

python --version
image.png

查看安装了哪些包:

conda list
image.png

3.2.2.4. (图形界面)创建 python2.7环境

4. 使用

4.1. 在指定环境下载指定包

image.png

5. 常用命令

5.1. 管理环境

5.1.1. 打开anaconda的anaconda prompt查看当前环境:

conda info -e
或
conda info --envs

5.1.2. 创建新的环境

  • 创建新的环境(名为py27),并指定运行环境为python2.7
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7
  • 创建新环境,并安装包
conda create -n env_name numpy matplotlib python=2.7

5.1.3. 显示已创建的环境

conda info --envs
# 或
conda info -e
# 或
conda env list
image.png

5.1.4. 激活及退出环境

  • 激活环境
    macOS:
conda activate py27
或
source activate py27

windows:

activate py27

以macOS 为例:


image.png
  • 退出环境
    macOS:
conda deactivate
或
source deactivate

windows:

deactivate

以 macOS 为例:


image.png

当执行"退出当前环境",回到root环境命令后,原本行首以“(env_name)”或“[env_name]”开头的字符将不再显示。

5.1.5. 复制环境

conda create --name new_env_name --clone copied_env_name

注意:

  • copied_env_name 即为被复制/克隆环境名
  • new_env_name 即为复制之后新环境的名称
  • 如:conda create --name py2 --clone python2,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同。

5.1.6. 删除环境

conda remove --name env_name --all

env_name> 为被删除环境的名称。

5.2. 管理包

5.2.1. 检查新环境下的python版本以及在创建环境时conda自动安装了那些必须的包

#查看python版本
python --version

#查看安装了那些包
conda list
#或者
conda list -n python27

5.2.1. 安装包

给某个特定环境安装包。

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

推荐阅读更多精彩内容