在 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閱讀 227,224評論 6 529
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,916評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,014評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,466評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,245評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,795評論 1 320
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,869評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,010評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,524評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,487評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,634評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,173評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,884評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,282評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,541評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,236評論 3 388
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,623評論 2 370

推薦閱讀更多精彩內容