最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Python中庫(kù)的自動(dòng)安裝與依賴管理

 更新時(shí)間:2026年04月24日 08:49:20   作者:weixin_30777913  
在 Python 項(xiàng)目開(kāi)發(fā)中,管理第三方庫(kù)依賴是一項(xiàng)基礎(chǔ)而關(guān)鍵的工作,本文會(huì)深入剖析pipimport和pipreqs的工作原理、安裝使用方法及注意事項(xiàng),并通過(guò)實(shí)際案例展示其在不同開(kāi)發(fā)場(chǎng)景下的最佳實(shí)踐,旨在為開(kāi)發(fā)者提供一套完整的 Python 依賴管理解決方案

在 Python 項(xiàng)目開(kāi)發(fā)中,管理第三方庫(kù)依賴是一項(xiàng)基礎(chǔ)而關(guān)鍵的工作。本文詳細(xì)論述了兩款實(shí)用工具:pipimport——在 import 時(shí)自動(dòng)安裝缺失模塊的工具,以及 pipreqs——基于項(xiàng)目源碼 import 語(yǔ)句自動(dòng)生成 requirements.txt 依賴文件的工具。文章深入剖析兩者的工作原理、安裝使用方法及注意事項(xiàng),并通過(guò)實(shí)際案例展示其在不同開(kāi)發(fā)場(chǎng)景下的最佳實(shí)踐,旨在為開(kāi)發(fā)者提供一套完整的 Python 依賴管理解決方案。

一、引言

Python 的依賴管理始終是開(kāi)發(fā)者繞不開(kāi)的話題。無(wú)論是從 GitHub 克隆一個(gè)新項(xiàng)目卻發(fā)現(xiàn)缺少 requirements.txt,還是分享自己的項(xiàng)目時(shí)需要手動(dòng)整理依賴列表,這些繁瑣的環(huán)節(jié)都會(huì)影響開(kāi)發(fā)效率。

傳統(tǒng)的 pip freeze > requirements.txt 方式雖然便捷,但它導(dǎo)出的是當(dāng)前 Python 環(huán)境中的所有已安裝包,而非項(xiàng)目實(shí)際使用的依賴,容易引入大量無(wú)關(guān)內(nèi)容。與此同時(shí),新手在運(yùn)行他人代碼時(shí)頻繁遇到 ModuleNotFoundError,不得不一次次手動(dòng)執(zhí)行 pip install,體驗(yàn)感極差。

針對(duì)這些問(wèn)題,社區(qū)涌現(xiàn)出了兩類針對(duì)性工具:在缺少模塊時(shí)自動(dòng)安裝的 pipimport,以及從源碼分析自動(dòng)生成精確依賴清單的 pipreqs。本文將對(duì)這兩款工具進(jìn)行系統(tǒng)性的介紹與分析。

二、pipimport:在 import 時(shí)自動(dòng)安裝缺失模塊

2.1 工具概述

pipimport 是一款能夠在導(dǎo)入時(shí)自動(dòng)安裝缺失 Python 模塊的工具。它的核心設(shè)計(jì)理念是:攔截 ModuleNotFoundError,調(diào)用 pip 安裝所需模塊,然后再完成正常的導(dǎo)入流程。

官方推薦在虛擬環(huán)境 (virtualenv) 中使用 pipimport,這樣可以避免污染系統(tǒng) Python 環(huán)境。

2.2 安裝方法

通過(guò) pip 直接安裝:

pip install pipimport

2.3 使用方法

基礎(chǔ)用法

在需要啟用自動(dòng)安裝功能的 Python 文件中,首先導(dǎo)入 pipimport 并調(diào)用 install() 方法:

import pipimport
pipimport.install()

# 此后,可以正常導(dǎo)入未安裝的模塊,pipimport 會(huì)自動(dòng)完成安裝
import requests  # 如果 requests 未安裝,將自動(dòng)執(zhí)行 pip install requests
import numpy     # 同樣自動(dòng)安裝 numpy

進(jìn)階用法:創(chuàng)建自動(dòng)導(dǎo)入模塊

更優(yōu)雅的方式是創(chuàng)建一個(gè)專門的文件(例如 autopipimport.py),在其中集中完成初始化,然后在其他模塊中首先導(dǎo)入它:

# autopipimport.py
import pipimport
pipimport.install()
# 其他需要自動(dòng)安裝依賴的文件
import autopipimport
import pandas      # 自動(dòng)安裝 pandas 及其依賴
import matplotlib  # 自動(dòng)安裝 matplotlib

2.4 工作原理

pipimport 的實(shí)現(xiàn)基于 Python 的導(dǎo)入鉤子 (import hook) 機(jī)制。當(dāng) pipimport.install() 被調(diào)用時(shí),它會(huì)在模塊導(dǎo)入鏈中插入一個(gè)自定義的查找器,當(dāng)標(biāo)準(zhǔn)導(dǎo)入機(jī)制無(wú)法找到指定模塊時(shí),該鉤子會(huì)截獲異常并執(zhí)行以下流程:

  1. 判斷目標(biāo)模塊是否已存在于 .pipimport-ignore 文件中(防止重復(fù)嘗試失敗的安裝)
  2. 調(diào)用 pip install 命令安裝對(duì)應(yīng)模塊
  3. 安裝完成后重新執(zhí)行導(dǎo)入操作

值得注意的是,pipimport 不會(huì)無(wú)限制地重復(fù)嘗試——它會(huì)將無(wú)法成功安裝的模塊記錄在 .pipimport-ignore 文件中(默認(rèn)存儲(chǔ)在虛擬環(huán)境目錄或當(dāng)前工作目錄),從而避免重復(fù)下載和安裝失敗操作。

2.5 注意事項(xiàng)與局限

  1. 虛擬環(huán)境優(yōu)先:pipimport 最好在虛擬環(huán)境中使用。在系統(tǒng) Python 環(huán)境中使用時(shí),需要具備相應(yīng)的寫入權(quán)限。
  2. 網(wǎng)絡(luò)依賴:自動(dòng)安裝功能需要穩(wěn)定的網(wǎng)絡(luò)連接,否則會(huì)失敗。
  3. 版本管理:pipimport 默認(rèn)安裝最新版本,不直接支持鎖定特定版本。
  4. 首次導(dǎo)入延遲:安裝過(guò)程會(huì)帶來(lái)額外的等待時(shí)間,首次運(yùn)行時(shí)可能較慢。
  5. 安全性考慮:在生產(chǎn)環(huán)境中不宜使用,自動(dòng)安裝未經(jīng)審查的包可能帶來(lái)安全風(fēng)險(xiǎn)。

三、pipreqs:基于源碼分析生成精確的 requirements.txt

3.1 工具概述

pipreqs 是一個(gè)用于生成 Python 項(xiàng)目 requirements.txt 文件的利器。與 pip freeze 不同,pipreqs 通過(guò)掃描項(xiàng)目源碼中的 import 語(yǔ)句來(lái)識(shí)別實(shí)際使用的依賴庫(kù),進(jìn)而生成精確、精簡(jiǎn)的依賴清單。

其最大的優(yōu)勢(shì)在于“精準(zhǔn)”——只包含項(xiàng)目真正用到的庫(kù),而非整個(gè) Python 環(huán)境中的所有已安裝包。

3.2 安裝方法

pip install pipreqs

若不需 Jupyter Notebook 支持,可以通過(guò)以下命令精簡(jiǎn)化安裝(不安裝其依賴項(xiàng)):

pip install --no-deps pipreqs
pip install yarg==0.1.9 docopt==0.6.2

3.3 基本使用方法

生成 requirements.txt

在項(xiàng)目根目錄下執(zhí)行:

# 在 Linux/macOS 系統(tǒng)中
pipreqs ./
# 在 Windows 系統(tǒng)中(處理編碼問(wèn)題)
pipreqs ./ --encoding=utf-8
# 強(qiáng)制覆蓋已存在的 requirements.txt
pipreqs ./ --encoding=utf-8 --force

重建依賴環(huán)境

其他開(kāi)發(fā)者獲得 requirements.txt 后,可通過(guò)以下命令一鍵安裝所有依賴:

pip install -r requirements.txt

3.4 高級(jí)功能

pipreqs 提供了豐富的命令行選項(xiàng),以滿足不同場(chǎng)景的需求。

版本控制模式

通過(guò) --mode 參數(shù)控制生成版本號(hào)的格式:

# 兼容模式:生成 Flask~=2.2.0
pipreqs ./ --mode compat
# 大于模式:生成 Flask>=2.2.0  
pipreqs ./ --mode gt
# 不固定版本:僅生成包名,不包含版本號(hào)
pipreqs ./ --mode no-pin
  • 精確版本 (==):適合生產(chǎn)部署和 CI/CD 流水線,保證環(huán)境可復(fù)現(xiàn)
  • 兼容版本 (~=):允許同主版本號(hào)內(nèi)的小版本更新
  • 大于等于 (>=):適合庫(kù)開(kāi)發(fā)和開(kāi)發(fā)環(huán)境,保持靈活性的同時(shí)確保最低版本
  • 不固定版本:適合快速共享,接收方可自由選擇已適配版本

路徑與輸出控制

# 指定分析特定目錄
pipreqs /path/to/project
# 指定輸出文件路徑
pipreqs ./ --savepath custom-requirements.txt
# 僅打印結(jié)果,不寫入文件
pipreqs ./ --print

忽略與排除

# 忽略指定目錄(多個(gè)目錄用逗號(hào)分隔)
pipreqs ./ --ignore tests,docs,venv
# 忽略 Jupyter Notebook 掃描
pipreqs ./ --scan-notebooks  # 啟用筆記本掃描

依賴維護(hù)與清理

# 清理 requirements.txt 中項(xiàng)目不再使用的包
pipreqs ./ --clean requirements.txt
# 對(duì)比項(xiàng)目 imports 與現(xiàn)有文件的差異
pipreqs ./ --diff requirements.txt

--clean--diff 選項(xiàng)使得 pipreqs 不僅可以生成依賴文件,還能對(duì)現(xiàn)有依賴清單進(jìn)行智能化維護(hù),幫助開(kāi)發(fā)者隨著代碼迭代持續(xù)優(yōu)化依賴列表。

3.5 工作原理

pipreqs 的核心是通過(guò)遍歷 Python 的抽象語(yǔ)法樹 (Abstract Syntax Tree) 來(lái)分析項(xiàng)目中的所有 import 語(yǔ)句。其執(zhí)行流程如下:

  1. 遞歸掃描:遍歷項(xiàng)目目錄下的所有 .py 文件
  2. AST 解析:解析每個(gè)文件的抽象語(yǔ)法樹,提取所有 importfrom ... import ... 語(yǔ)句
  3. 模塊映射:將導(dǎo)入的模塊名映射到 PyPI 上的實(shí)際包名(例如 cv2opencv-python,PILPillow
  4. 版本查詢:查詢 PyPI 獲取最新的穩(wěn)定版本號(hào)
  5. 生成文件:整理并輸出格式化的 requirements.txt 文件

這一機(jī)制的優(yōu)勢(shì)在于,pipreqs 僅基于代碼本身進(jìn)行分析,完全獨(dú)立于當(dāng)前 Python 環(huán)境的安裝狀態(tài),因此即使在一個(gè)“干凈”的環(huán)境中也能生成準(zhǔn)確的依賴清單。

3.6 注意事項(xiàng)與局限

  1. 動(dòng)態(tài)導(dǎo)入無(wú)法識(shí)別__import__()、importlib.import_module() 等動(dòng)態(tài)導(dǎo)入方式無(wú)法被 AST 靜態(tài)分析檢測(cè)。
  2. 間接依賴缺失:若代碼只調(diào)用了封裝庫(kù)而未曾直接 import 其底層依賴(如使用 scikit-learn 而未顯式 import numpy),這些隱式依賴不會(huì)被自動(dòng)識(shí)別。
  3. 版本默認(rèn)鎖定:pipreqs 默認(rèn)生成帶有 == 精確版本號(hào)的依賴,生產(chǎn)部署雖安全,但在庫(kù)開(kāi)發(fā)或跨平臺(tái)傳遞時(shí)可能過(guò)于嚴(yán)格,建議根據(jù)具體場(chǎng)景選擇合適的 --mode 參數(shù)。
  4. 包名映射不完美:部分模塊的導(dǎo)入名與 PyPI 包名不一致(如 yamlpyyaml),可能需要手動(dòng)修正。
  5. 編碼問(wèn)題:在 Windows 系統(tǒng)中可能遇到 GBK 編碼錯(cuò)誤,建議始終加上 --encoding=utf-8 參數(shù)。
  6. 大型項(xiàng)目性能:項(xiàng)目體量較大時(shí)掃描時(shí)間可能較長(zhǎng),建議在自動(dòng)化流程中異步執(zhí)行。

四、pipreqs 與 pip freeze 的深入對(duì)比

在實(shí)際開(kāi)發(fā)中,pipreqs 和 pip freeze 是兩個(gè)常被放在一起比較的工具,但它們的適用場(chǎng)景截然不同。

對(duì)比維度pipreqspip freeze
依賴來(lái)源掃描項(xiàng)目源碼中的 import 語(yǔ)句掃描當(dāng)前 Python 環(huán)境中所有已安裝包
生成的依賴清單僅包含項(xiàng)目實(shí)際使用的庫(kù)包含環(huán)境中所有包,包括未使用的
環(huán)境依賴無(wú)需在項(xiàng)目環(huán)境中運(yùn)行需要在項(xiàng)目使用環(huán)境中運(yùn)行
準(zhǔn)確度精確反映項(xiàng)目真實(shí)依賴可能包含大量無(wú)關(guān)包
適用場(chǎng)景項(xiàng)目交接、發(fā)布、新環(huán)境部署環(huán)境備份、虛擬環(huán)境復(fù)制
間接依賴可能遺漏動(dòng)態(tài)導(dǎo)入的隱式依賴自動(dòng)包含所有間接依賴

典型場(chǎng)景選擇:

  1. 準(zhǔn)備發(fā)布項(xiàng)目或交接代碼:使用 pipreqs,確保接收者只安裝實(shí)際需要的依賴,減少環(huán)境體積和不必要的兼容性風(fēng)險(xiǎn)。
  2. 復(fù)現(xiàn)完整開(kāi)發(fā)環(huán)境:使用 pip freeze,確保所有工具鏈(如 linter、pytest 插件)都被保留,實(shí)現(xiàn)環(huán)境的一比一還原。
  3. CI/CD 構(gòu)建流程:首先用 pipreqs 生成基礎(chǔ)的生產(chǎn)依賴(requirements.txt),再單獨(dú)維護(hù)一份 dev-requirements.txt 用于開(kāi)發(fā)和測(cè)試工具,實(shí)現(xiàn)依賴的精細(xì)化分層管理。

實(shí)際上,成熟的 Python 項(xiàng)目往往會(huì)結(jié)合使用兩者:pipreqs 用于生成核心依賴清單,而完整的環(huán)境快照則通過(guò) pip freeze 另行保存。

五、實(shí)踐案例

5.1 應(yīng)用場(chǎng)景一:克隆無(wú) requirements.txt 的項(xiàng)目

背景:從 GitHub 克隆了一個(gè)無(wú)法運(yùn)行的項(xiàng)目,提示缺失多個(gè)模塊。

解決方案:

# 1. 導(dǎo)航至項(xiàng)目根目錄
cd /path/to/cloned/project
# 2. 使用 pipreqs 生成依賴文件
pipreqs ./ --encoding=utf-8
# 3. 安裝全部依賴
pip install -r requirements.txt

5.2 應(yīng)用場(chǎng)景二:跨平臺(tái)分享 Python 腳本

背景:向 Windows 用戶分享一個(gè)在 macOS 上開(kāi)發(fā)的 Python 腳本。

采用 pipreqs + requirements.txt 的方式處理:

# 1. 進(jìn)入腳本所在目錄
cd /path/to/script/directory
# 2. 生成依賴文件
pipreqs ./ --encoding=utf-8 --mode gt
# 3. 將腳本和 requirements.txt 一同分享
# 接收方只需執(zhí)行: pip install -r requirements.txt

采用 --mode gt 生成 >= 版本的依賴,允許接收方安裝兼容的最新版本,提升了跨平臺(tái)和環(huán)境差異下的兼容性。

5.3 應(yīng)用場(chǎng)景三:交互式環(huán)境快速實(shí)驗(yàn)

背景:在 IPython 或 Jupyter Notebook 中進(jìn)行探索性數(shù)據(jù)分析,希望自動(dòng)安裝缺失的庫(kù)。

import pipimport
pipimport.install()

# 直接在 Notebook 中導(dǎo)入需要的庫(kù)
import seaborn as sns   # 如未安裝,自動(dòng)執(zhí)行 pip install seaborn
import plotly.express as px  # 自動(dòng)安裝 plotly

# 繼續(xù)進(jìn)行數(shù)據(jù)分析...

5.4 應(yīng)用場(chǎng)景四:結(jié)合兩者的完整工作流

對(duì)于一個(gè)需要分享的個(gè)人項(xiàng)目,建議的工作流程如下:

# 步驟 1:在虛擬環(huán)境中開(kāi)發(fā)(避免干擾系統(tǒng) Python)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
# 步驟 2:安裝 pipreqs
pip install pipreqs
# 步驟 3:使用 pipreqs 生成精確依賴(使用 >= 模式提升兼容性)
pipreqs ./ --encoding=utf-8 --mode gt
# 步驟 4:交付項(xiàng)目(包含 requirements.txt 和源代碼)
# 步驟 5:接收方只需執(zhí)行以下命令即可重建環(huán)境
pip install -r requirements.txt

六、最佳實(shí)踐建議

經(jīng)過(guò)對(duì)兩款工具的詳細(xì)分析,總結(jié)出以下最佳實(shí)踐:

6.1 關(guān)于 pipimport

  1. 僅在開(kāi)發(fā)和實(shí)驗(yàn)環(huán)境中使用:避免在正式部署中使用,確保生產(chǎn)環(huán)境依賴的可控性和安全性。
  2. 配合虛擬環(huán)境使用:避免污染全局 Python 環(huán)境,便于依賴的隔離管理。
  3. 明確依賴后再替換:可以用 pipimport 快速啟動(dòng)項(xiàng)目,待依賴穩(wěn)定后,使用 pip freezepipreqs 重新生成精確的依賴清單。

6.2 關(guān)于 pipreqs

  1. 項(xiàng)目初始化階段立即使用:創(chuàng)建項(xiàng)目之初就生成 requirements.txt,為后續(xù)的依賴維護(hù)建立基準(zhǔn)。
  2. 定期更新清理:代碼變更后使用 --clean 選項(xiàng)同步更新依賴清單,移除不再使用的包。
  3. 區(qū)分環(huán)境依賴:如有開(kāi)發(fā)環(huán)境特需庫(kù)(如測(cè)試框架 pytest),可單獨(dú)維護(hù) requirements-dev.txt,以實(shí)現(xiàn)依賴的精細(xì)化分層管理。
  4. 與版本控制結(jié)合:將 requirements.txt 納入版本控制系統(tǒng)(Git),便于追蹤依賴變更歷史和團(tuán)隊(duì)協(xié)作。
  5. 包名驗(yàn)證:生成文件后核對(duì)一下,尤其是像 cv2opencv-pythonyamlpyyaml 這類映射關(guān)系,確保接收方能正確下載安裝。

6.3 通用建議

  1. 虛擬環(huán)境是基礎(chǔ):無(wú)論使用何種依賴管理工具,都應(yīng)在虛擬環(huán)境中進(jìn)行開(kāi)發(fā),保證不同項(xiàng)目間的依賴隔離。
  2. 工具互補(bǔ):pipimport 解決“即時(shí)安裝”的問(wèn)題,pipreqs 解決“精確記錄”的問(wèn)題,二者可互補(bǔ)使用。
  3. 持續(xù)集成:在 CI/CD 流水線中集成 pipreqs 檢查,確保依賴文件始終與代碼保持同步。

到此這篇關(guān)于深入解析Python中庫(kù)的自動(dòng)安裝與依賴管理的文章就介紹到這了,更多相關(guān)Python庫(kù)自動(dòng)安裝與依賴管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python字符串拼接的4種方法實(shí)例

    Python字符串拼接的4種方法實(shí)例

    字符串是所有編程語(yǔ)言中都有的基本變量的類型?,程序員基本每天都在和字符串打交道,下面這篇文章主要給大家介紹了關(guān)于Python字符串拼接的4種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 爬蟲代理的cookie如何生成運(yùn)行

    爬蟲代理的cookie如何生成運(yùn)行

    這篇文章主要介紹了爬蟲代理的cookie如何生成運(yùn)行,幫助大家更好的理解和使用爬蟲,感興趣的朋友可以了解下
    2020-09-09
  • 一文教你如何使用Python繪制瀑布圖

    一文教你如何使用Python繪制瀑布圖

    什么是瀑布圖?瀑布圖用表達(dá)兩個(gè)數(shù)值之間的變化過(guò)程,過(guò)程值為正的時(shí)候,向上加,過(guò)程值為負(fù)的時(shí)候向下減。本文就帶大家學(xué)習(xí)一下如何用Python繪制瀑布圖吧
    2023-04-04
  • OpenCV-Python直方圖均衡化實(shí)現(xiàn)圖像去霧

    OpenCV-Python直方圖均衡化實(shí)現(xiàn)圖像去霧

    直方圖均衡化可以達(dá)到增強(qiáng)圖像顯示效果的目的。最常用的比如去霧。本文就來(lái)實(shí)現(xiàn)直方圖均衡化實(shí)現(xiàn)圖像去霧,感興趣的可以了解一下
    2021-06-06
  • 詳解Python 中sys.stdin.readline()的用法

    詳解Python 中sys.stdin.readline()的用法

    這篇文章主要介紹了Python 中sys.stdin.readline()的用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python 使用matplotlib 實(shí)現(xiàn)從文件中讀取x,y坐標(biāo)的可視化方法

    python 使用matplotlib 實(shí)現(xiàn)從文件中讀取x,y坐標(biāo)的可視化方法

    今天小編就為大家分享一篇python 使用matplotlib 實(shí)現(xiàn)從文件中讀取x,y坐標(biāo)的可視化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python中for in的用法詳解

    python中for in的用法詳解

    這篇文章主要介紹了python中for in的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 用Python寫的圖片蜘蛛人代碼

    用Python寫的圖片蜘蛛人代碼

    寫了個(gè)圖片蜘蛛人玩玩,抓了幾個(gè)網(wǎng)頁(yè)試試,感覺(jué)不不錯(cuò)。核心的代碼可能20行也不到,簡(jiǎn)潔明了,嘻嘻。廢話少說(shuō),翠花,上代碼
    2012-08-08
  • Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    Python實(shí)現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • python銀行系統(tǒng)實(shí)現(xiàn)源碼

    python銀行系統(tǒng)實(shí)現(xiàn)源碼

    這篇文章主要為大家詳細(xì)介紹了python銀行系統(tǒng)實(shí)現(xiàn)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論

隆回县| 兴宁市| 库车县| 阳江市| 萝北县| 涪陵区| 万载县| 潼南县| 招远市| 宝丰县| 双城市| 焉耆| 扬中市| 汤原县| 昂仁县| 日照市| 赤城县| 曲沃县| 花垣县| 崇明县| 洛扎县| 舒城县| 伊通| 石门县| 竹溪县| 正宁县| 常州市| 易门县| 朝阳市| 睢宁县| 峨山| 灵石县| 三明市| 南平市| 大同市| 庐江县| 辽源市| 安达市| 鲜城| 鄂温| 道真|