在 Ubuntu 上安装 TensorFlow

在 Ubuntu 上安装 TensorFlow


本指南将介绍如何在 Ubuntu 上安装 TensorFlow。虽然这些说明可能也适用于其他 Linux 版本,但我们只在满足以下要求的计算机上验证过这些说明(而且我们只支持在此类计算机上按这些说明操作):

64 位台式机或笔记本电脑

Ubuntu 16.04 或更高版本

确定要安装哪种 TensorFlow

您必须从以下 TensorFlow 类型中选择其一来进行安装:

仅支持 CPU 的 TensorFlow。如果您的系统没有 NVIDIA® GPU,则必须安装此版本。请注意,此版本的 TensorFlow 通常更容易安装(用时通常在 5 或 10 分钟内),所以即使您拥有 NVIDIA GPU,我们也建议先安装此版本。

支持 GPU 的 TensorFlow。TensorFlow 程序在 GPU 上的运行速度通常要比在 CPU 上快得多。因此,如果您的系统配有满足以下所示先决条件的 NVIDIA® GPU,并且您需要运行性能至关重要的应用,则最终应安装此版本。

运行支持 GPU 的 TensorFlow 所需满足的 NVIDIA 要求

如果您要使用本指南描述的其中一种方式安装支持 GPU 的 TensorFlow,则必须在系统上安装以下 NVIDIA 软件:

CUDA® 工具包 9.0。如需了解详情,请参阅NVIDIA 文档。请务必按照 NVIDIA 文档中的说明将相关的 CUDA 路径名附加到LD_LIBRARY_PATH环境变量上。

cuDNN SDK v7。如需了解详情,请参阅NVIDIA 文档。请务必按照 NVIDIA 文档中的说明创建CUDA_HOME环境变量。

CUDA 计算能力为 3.0 或更高的 GPU 卡(用于从源代码编译),以及 CUDA 计算能力为 3.5 或更高的 GPU 卡(用于安装我们的二进制文件)。如需了解支持的 GPU 卡的列表,请参阅NVIDIA 文档

支持您的 CUDA 工具包版本的GPU 驱动程序

libcupti-dev 库,它是 NVIDIA CUDA 分析工具接口。此库提供高级分析支持。要安装此库,请针对 CUDA 工具包 9.0 或更高版本发出以下命令:

$sudo apt-get install cuda-command-line-tools

并将其路径添加到您的LD_LIBRARY_PATH环境变量上:

$export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda/extras/CUPTI/lib64

对于 CUDA 工具包 7.5 或更低版本,请发出以下命令:

$sudo apt-get install libcupti-dev

[可选]为了优化推理效果,您还可以安装NVIDIA TensorRT 3.0。搭配预编译的tensorflow-gpu软件包使用所需的最小 TensorRT 运行时组件集合可按以下方法安装:

$wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb$sudo dpkg -i nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb$sudo apt-get update$sudo apt-get install -y --allow-downgrades libnvinfer-dev libcudnn7-dev=7.0.5.15-1+cuda9.0 libcudnn7=7.0.5.15-1+cuda9.0

重要提示:为了兼容预编译的tensorflow-gpu软件包,请使用 TensorRT 的 Ubuntu14.04软件包(如上所示),即使要安装到 Ubuntu 16.04 系统中也不例外。

要从源代码编译 TensorFlow-TensorRT 集成模块(而不是使用预编译的二进制文件),请参阅模块文档。要详细了解 TensorRT 安装说明,请参阅NVIDIA 的 TensorRT 文档

为避免在以后的系统升级过程中出现 cuDNN 版本冲突,您可以将 cuDNN 版本保持为 7.0.5:

$ sudo apt-mark hold libcudnn7 libcudnn7-dev

日后要允许进行升级,您可以取消这一保持行为:

$ sudo apt-mark unhold libcudnn7 libcudnn7-dev

如果您已安装前述软件包的旧版本,请升级到指定版本。如果升级不可行,您仍然可以运行支持 GPU 的 TensorFlow,但前提是您从源代码安装 TensorFlow

确定如何安装 TensorFlow

您必须选择安装 TensorFlow 的方式。目前可支持如下几种方式:

Virtualenv

“原生”pip

Docker

Anaconda

从源代码安装(详情请参阅这篇单独的指南)。

我们建议采用 Virtualenv 安装方式。Virtualenv是一个与其他 Python 开发相互隔离的虚拟 Python 环境,它无法干扰同一计算机上的其他 Python 程序,也不会受其影响。在 Virtualenv 安装过程中,您不仅要安装 TensorFlow,还要安装 TensorFlow 需要的所有软件包。(这一过程其实很简单。)要开始使用 TensorFlow,您只需要“激活”虚拟环境。总而言之,Virtualenv 提供一种安全可靠的机制来安装和运行 TensorFlow。

原生 pip 会直接在您的系统上安装 TensorFlow,而不是通过任何容器系统。我们建议希望多用户系统中的每个用户都能使用 TensorFlow 的系统管理员采用原生 pip 安装。原生 pip 安装并未隔离在单独的容器中进行,因此可能会干扰系统中其他基于 Python 的安装。但是,如果您熟悉 pip 和您的 Python 环境,通常只需一条命令即可进行原生 pip 安装。

Docker 会将 TensorFlow 安装与您计算机上之前就已存在的软件包完全隔离开来。Docker 容器包含了 TensorFlow

及其所有依赖项。请注意,Docker 映像可能比较大(数百 MB)。如果您想要将 TensorFlow 整合到已在使用 Docker

的某个更大的应用架构中,则可以选择 Docker 安装。

在 Anaconda 中,您可以使用 conda 来创建一个虚拟环境。但是,在 Anaconda 内部,我们建议使用pip install命令来安装 TensorFlow,而不要使用conda install命令。

注意:conda 软件包是由社区提供支持的,并没有任何官方支持。也就是说,TensorFlow 团队既不测试也不维护 conda 软件包。若使用该软件包,您需要自行承担相关风险。

使用 Virtualenv 进行安装

请按照以下步骤使用 Virtualenv 安装 TensorFlow:

发出下列其中一条命令来安装 pip 和 Virtualenv:

$sudo apt-get install python-pip python-dev python-virtualenv# for Python 2.7$sudo apt-get install python3-pip python3-dev python-virtualenv# for Python 3.n

发出下列其中一条命令来创建 Virtualenv 环境:

$virtualenv --system-site-packagestargetDirectory# for Python 2.7$virtualenv --system-site-packages -p python3targetDirectory# for Python 3.n

targetDirectory用于指定 Virtualenv 树的顶层目录。我们的指令假定targetDirectory为~/tensorflow,但您可以选择任何目录。

通过发出下列其中一条命令激活 Virtualenv 环境:

$source ~/tensorflow/bin/activate# bash, sh, ksh, or zsh$source ~/tensorflow/bin/activate.csh# csh or tcsh$. ~/tensorflow/bin/activate.fish# fish

执行上述source命令后,您的提示符应该会变成如下内容:

(tensorflow)$

确保安装了 pip 8.1 或更高版本:

(tensorflow)$easy_install -U pip

发出下列其中一条命令以在活动 Virtualenv 环境中安装 TensorFlow:

(tensorflow)$pip install --upgrade tensorflow# for Python 2.7(tensorflow)$pip3 install --upgrade tensorflow# for Python 3.n(tensorflow)$pip install --upgrade tensorflow-gpu# for Python 2.7 and GPU(tensorflow)$pip3 install --upgrade tensorflow-gpu# for Python 3.n and GPU

如果上述命令执行成功,请跳过第 6 步。如果上述命令执行失败,请执行第 6 步。

(可选)如果第 5 步执行失败(通常是因为您所调用的 pip 版本低于 8.1),请通过发出以下格式的命令,在活动 Virtualenv 环境中安装 TensorFlow:

(tensorflow)$pip install --upgradetfBinaryURL# Python 2.7(tensorflow)$pip3 install --upgradetfBinaryURL# Python 3.n

其中tfBinaryURL表示 TensorFlow Python 软件包的网址。tfBinaryURL的正确值取决于操作系统、Python 版本和 GPU 支持。可在此处查找适合您系统的tfBinaryURL值。例如,如果您要为装有 Python 3.4 的 Linux 安装仅支持 CPU 的 TensorFlow,则发出以下命令以在活动 Virtualenv 环境中安装 TensorFlow:

(tensorflow)$pip3 install --upgrade

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl

如果您遇到任何安装问题,请参阅常见的安装问题

后续步骤

安装 TensorFlow 后,请验证安装

请注意,每次使用 TensorFlow 时,您都必须激活 Virtualenv 环境。如果 Virtualenv 环境当前未处于活动状态,请调用以下命令之一:

$source ~/tensorflow/bin/activate# bash, sh, ksh, or zsh$source ~/tensorflow/bin/activate.csh# csh or tcsh

在 Virtualenv 环境激活后,您就可以从这个 shell 运行 TensorFlow 程序。您的提示符将变成如下所示,这表示您的 Tensorflow 环境已处于活动状态:

(tensorflow)$

用完 TensorFlow 后,可以通过发出以下命令调用deactivate函数来停用环境:

(tensorflow)$deactivate

提示符将恢复为您的默认提示符(由PS1环境变量所定义)。

卸载 TensorFlow

要卸载 TensorFlow,只需移除您创建的树即可。例如:

$rm -rtargetDirectory

使用原生 pip 进行安装

您可以通过 pip 安装 TensorFlow,安装流程有两种:一种简单,一种复杂一点。

注意setup.py 的 REQUIRED_PACKAGES 部分列出了 pip 将要安装或升级的 TensorFlow 软件包。

先决条件:Python 和 Pip

Ubuntu 中已自动安装 Python。请花点时间确认(通过发出python -V命令)您的系统中是否已经安装了下列某个 Python 版本:

Python 2.7

Python 3.4+

Ubuntu 上通常已安装 pip 或 pip3 软件包管理器。请花点时间确认(通过发出pip -V或pip3 -V命令)是否已经安装 pip 或 pip3。我们强烈建议使用 8.1 或更高版本的 pip 或 pip3。如果未安装 pip 或 pip3 版本 8.1 或更高版本,请发出以下命令来安装 pip 或升级到最新版本:

$sudo apt-get install python-pip python-dev# for Python 2.7$sudo apt-get install python3-pip python3-dev# for Python 3.n

安装 TensorFlow

假设您的 Linux 主机上已安装必备软件,请执行以下步骤:

调用下列其中一条命令来安装 TensorFlow:

$pip install tensorflow# Python 2.7; CPU support (no GPU support)$pip3 install tensorflow# Python 3.n; CPU support (no GPU support)$pip install tensorflow-gpu# Python 2.7;  GPU support$pip3 install tensorflow-gpu# Python 3.n; GPU support

如果前面的命令运行完成,您现在应该验证您的安装

(可选)如果第 1 步执行失败,请通过发出以下格式的命令安装最新版本的 TensorFlow:

$sudo pip  install --upgradetfBinaryURL# Python 2.7$sudo pip3 install --upgradetfBinaryURL# Python 3.n

其中tfBinaryURL表示 TensorFlow Python 软件包的网址。tfBinaryURL的正确值取决于操作系统、Python 版本和 GPU 支持。可在此处查找tfBinaryURL的相应值。例如,要为装有 Python 3.4 的 Linux 安装仅支持 CPU 的 TensorFlow,可发出以下命令:

$sudo pip3 install --upgrade

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl

如果此步骤执行失败,请参阅常见安装问题

后续步骤

安装 TensorFlow 后,请验证您的安装

卸载 TensorFlow

要卸载 TensorFlow,请发出下列其中一条命令:

$sudo pip uninstall tensorflow# for Python 2.7$sudo pip3 uninstall tensorflow# for Python 3.n

使用 Docker 进行安装

按照以下步骤通过 Docker 安装 TensorFlow:

按照Docker 文档中的说明在计算机上安装 Docker。

(可选)创建一个名为docker的 Linux 组,以支持启动不带 sudo 的容器(如Docker 文档中所述)。(如果不执行此步骤,则每次调用 Docker 时都必须使用 sudo。)

要安装支持 GPU 的 TensorFlow 版本,您必须先安装nvidia-docker(存储在 github 中)。

启动包含某个TensorFlow 二进制映像的 Docker 容器。

本节的其余部分将介绍如何启动 Docker 容器。

仅支持 CPU

要启动仅支持 CPU(即不支持 GPU)的 Docker 容器,请输入以下格式的命令:

$ docker run -it-p hostPort:containerPort TensorFlowCPUImage

其中:

-p hostPort:containerPort是可选项。如果您想从 shell 运行 TensorFlow 程序,请省略此选项。如果您想从 Jupiter 笔记本运行 TensorFlow 程序,请将hostPortcontainerPort设置为8888。如果您想在容器内部运行 TensorBoard,请再添加一个-p标记,并将 hostPort 和 containerPort 设置为 6006。

TensorFlowCPUImage是必填项。它表示 Docker 容器。请指定如下某个值:

tensorflow/tensorflow:TensorFlow CPU 二进制映像。

tensorflow/tensorflow:latest-devel:最新的 TensorFlow CPU 二进制映像以及源代码。

tensorflow/tensorflow:version:指定的 TensorFlow CPU 二进制映像版本(如 1.1.0rc1)。

tensorflow/tensorflow:version-devel:指定的 TensorFlow GPU 二进制映像版本(如 1.1.0rc1)以及源代码。

dockerhub上提供了一些 TensorFlow 映像。

例如,以下命令会在 Docker 容器中启动最新的 TensorFlow CPU 二进制映像,您可以通过该容器在 shell 中运行 TensorFlow 程序:

$docker run -it tensorflow/tensorflow bash

以下命令也可在 Docker 容器中启动最新的 TensorFlow CPU 二进制映像。但是,在这个 Docker 容器里,您可以通过 Jupyter Notebook 运行 TensorFlow 程序:

$docker run -it -p 8888:8888 tensorflow/tensorflow

Docker 将在您第一次启动 TensorFlow 二进制映像时下载该映像。

GPU 支持

在安装支持 GPU 的 TensorFlow 之前,请确保您的系统满足所有NVIDIA 软件要求。要启动支持 NVidia GPU 的 Docker 容器,请输入以下格式的命令:

$nvidia-docker run -it-p hostPort:containerPort TensorFlowGPUImage

其中:

-p hostPort:containerPort是可选项。如果您想从 shell 运行 TensorFlow 程序,请省略此选项。如果您想从 Jupiter 笔记本运行 TensorFlow 程序,请将hostPortcontainerPort设置为8888。

TensorFlowGPUImage 用于指定 Docker 容器。您必须指定如下某个值:

tensorflow/tensorflow:latest-gpu:最新的 TensorFlow GPU 二进制映像。

tensorflow/tensorflow:latest-devel-gpu:最新的 TensorFlow GPU 二进制映像以及源代码。

tensorflow/tensorflow:version-gpu:指定的 TensorFlow GPU 二进制映像版本(如 0.12.1)。

tensorflow/tensorflow:version-devel-gpu:指定的 TensorFlow GPU 二进制映像版本(如 0.12.1)以及源代码。

我们建议安装最新 (latest) 的某个版本。例如,以下命令会在 Docker 容器中启动最新的 TensorFlow GPU 二进制映像,您可以通过该容器在 shell 中运行 TensorFlow 程序:

$nvidia-docker run -it tensorflow/tensorflow:latest-gpu bash

以下命令也可在 Docker 容器中启动最新的 TensorFlow GPU 二进制映像。在这个 Docker 容器里,您可以通过 Jupyter Notebook 运行 TensorFlow 程序:

$nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

以下命令会安装旧版 TensorFlow (0.12.1):

$nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:0.12.1-gpu

Docker 将在您第一次启动 TensorFlow 二进制映像时下载该映像。有关详情,请参阅TensorFlow Docker 自述文件

后续步骤

您现在应该验证您的安装

使用 Anaconda 进行安装

按照以下步骤在 Anaconda 环境中安装 TensorFlow:

按照Anaconda 下载网站上的说明下载并安装 Anaconda。

通过调用以下命令创建名为tensorflow的 conda 环境,以运行某个版本的 Python:

$conda create -n tensorflow pip python=2.7 # or python=3.3, etc.

通过发出以下命令激活 conda 环境:

$source activate tensorflow(tensorflow)$  # Your prompt should change

发出以下格式的命令以在 conda 环境中安装 TensorFlow:

(tensorflow)$pip install --ignore-installed --upgradetfBinaryURL

其中tfBinaryURLTensorFlow Python 软件包的网址。例如,以下命令将针对 Python 3.4 安装仅支持 CPU 的 TensorFlow 版本:

(tensorflow)$pip install --ignore-installed --upgrade

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl

验证您的安装

要验证您的 TensorFlow 安装,请执行以下操作:

确保您的环境已准备好运行 TensorFlow 程序。

运行一个简短的 TensorFlow 程序。

准备您的环境

如果您是在原生 pip、Virtualenv 或 Anaconda 上进行安装,请执行以下操作:

启动终端。

如果您是通过 Virtualenv 或 Anaconda 进行安装,请激活您的容器。

如果您安装了 TensorFlow 源代码,请导航到未包含 TensorFlow 源代码的任何目录。

如果您是通过 Docker 进行安装,请启动 Docker 容器以运行 bash。例如:

$docker run -it tensorflow/tensorflow bash

运行一个简短的 TensorFlow 程序

从 shell 中调用 Python,如下所示:

$python

在 Python 交互式 shell 中输入以下几行简短的程序代码:

# Pythonimport tensorflow astf

hello

= tf.constant('Hello, TensorFlow!')

sess

= tf.Session()print(sess.run(hello))

如果系统输出以下内容,说明您可以开始编写 TensorFlow 程序了:

Hello, TensorFlow!

如果系统输出一条错误消息而不是问候语,请参阅常见的安装问题

如果您刚开始接触机器学习,建议您阅读以下内容:

机器学习速成课程

机器学习新手使用入门

如果您拥有机器学习方面的经验,但刚开始接触 TensorFlow,请参阅TensorFlow 使用入门

常见的安装问题

我们借助 Stack Overflow 来记录 TensorFlow 安装问题及其补救措施。下表包含了 Stack Overflow 上一些常见安装问题解答的链接。如果您遇到了下表中未列出的错误消息或其他安装问题,请在 Stack Overflow 上进行搜索。如果 Stack Overflow 中没有显示相关错误消息,请在 Stack Overflow 上提一个新的问题,并指定tensorflow标签。

Stack Overflow 链接错误消息

36159194ImportError: libcudart.so.Version: cannot open shared object file:  No such file or directory

41991101ImportError: libcudnn.Version: cannot open shared object file:  No such file or directory

36371137以及此处libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A  protocol message was rejected because it was too big (more than 67108864 bytes).  To increase the limit (or to disable these warnings), see  CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.

35252888Error importing tensorflow. Unless you are using bazel, you should  not try to import tensorflow from its source directory; please exit the  tensorflow source tree, and relaunch your python interpreter from  there.

33623453IOError: [Errno 2] No such file or directory:  '/tmp/pip-o6Tpui-build/setup.py'

42006320ImportError: Traceback (most recent call last):  File ".../tensorflow/core/framework/graph_pb2.py", line 6, in  from google.protobuf import descriptor as _descriptor

  ImportError: cannot import name 'descriptor'

35190574SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify  failed

42009190Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow  Found existing installation: setuptools 1.1.6  Uninstalling setuptools-1.1.6:  Exception:  ...  [Errno 1] Operation not permitted:  '/tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib'

36933958...  Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow  Found existing installation: setuptools 1.1.6  Uninstalling setuptools-1.1.6:  Exception:  ...  [Errno 1] Operation not permitted:  '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/  Versions/2.7/Extras/lib/python/_markerlib'

TensorFlow Python 软件包的网址

部分安装方式需要您提供 TensorFlow Python 软件包的网址。您所指定的值取决于三个因素:

操作系统

Python 版本

仅支持 CPU 与支持 GPU

本部分介绍 Linux 安装的相关值。

Python 2.7

仅支持 CPU:

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp27-none-linux_x86_64.whl

支持 GPU:

https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp27-none-linux_x86_64.whl

请注意,GPU 版本需要运行支持 GPU 的 TensorFlow 所需满足的 NVIDIA 要求中所述的 NVIDIA 硬件和软件。

Python 3.4

仅支持 CPU:

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl

支持 GPU:

https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp34-cp34m-linux_x86_64.whl

请注意,GPU 版本需要运行支持 GPU 的 TensorFlow 所需满足的 NVIDIA 要求中所述的 NVIDIA 硬件和软件。

Python 3.5

仅支持 CPU:

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp35-cp35m-linux_x86_64.whl

支持 GPU:

https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp35-cp35m-linux_x86_64.whl

请注意,GPU 版本需要运行支持 GPU 的 TensorFlow 所需满足的 NVIDIA 要求中所述的 NVIDIA 硬件和软件。

Python 3.6

仅支持 CPU:

https://download.tensorflow.google.cn/linux/cpu/tensorflow-1.8.0-cp36-cp36m-linux_x86_64.whl

支持 GPU:

https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp36-cp36m-linux_x86_64.whl

请注意,GPU 版本需要运行支持 GPU 的 TensorFlow 所需满足的 NVIDIA 要求中所述的 NVIDIA 硬件和软件。

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

推荐阅读更多精彩内容