0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

配置Python開發(fā)環(huán)境的DeepStream容器

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 作者:NVIDIA英偉達(dá)企業(yè)解 ? 2022-08-12 11:05 ? 次閱讀

對于熟悉 C++ 的開發(fā)人員來說,前一篇文章將 DeepStreamSamples 版容器的范例搬到本機(jī)上,再搭配 Docker 路徑映射方式就能輕松搭建開發(fā)環(huán)境。但這種方式只適用于 C / C++ 范例,并不適用于 DeepStream 的 Python 環(huán)境,因為還需要安裝 Gstreamer 的 Gst-Python 與 DeepStream 的 PyBinding 與兩個元件。

我們可以在容器內(nèi)安裝這兩個元件,但是前面提供的 Docker 指令中使用 “--rm” 參數(shù),一旦退出容器之后就會銷毀這個調(diào)試好的環(huán)境,這對于使用來說是非常不方便的,因此必須做出調(diào)整,將調(diào)試好的環(huán)境保留下來,甚至于存成一個獨立的鏡像文件,就能方便日后的重復(fù)使用或移植工作。

1、將容器調(diào)整為 “后臺運(yùn)行” 執(zhí)行:

在 NGC 官方提供的指令中使用 “--it” “--rm” 是為了能快速啟用容器,并且在使用完畢后刪除容器以避免占用不必要的資源,現(xiàn)在我們來做以下調(diào)整:

  • “-it” 參數(shù)改成 “-id”參數(shù):這樣雖然不會第一時間進(jìn)入容器內(nèi)執(zhí)行,但是會讓這個容器在后臺運(yùn)行,并且打印容器 ID,后面在使用 “dockerexec” 指令來進(jìn)入容器操作,這是個非常實用的方式,大家可以好好學(xué)習(xí)使用方法;

  • 去除 “--rm” 參數(shù):退出容器之后自動移除;

  • 添加 “--name” 參數(shù):為了便于管理,不需要去面對長達(dá) 12 碼的容器編號,我們可以用這個參數(shù)去指定容器名稱,方便后面的操作;

  • 為了配合Python的iot應(yīng)用范例,建議選擇iot版容器的適用性會比較高。

現(xiàn)在試著執(zhí)行以下指令,創(chuàng)建一個要配置 Python 開發(fā)環(huán)境的 DeepStream 容器:

docker run -id --name=ds_python --net=host  --runtime=nvidia  -e DISPLAY=$DISPLAY -w  /opt/nvidia/deepstream/deepstream  -v /tmp/.X11-unix/:/tmp/.X11-unix -v  ~/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources -v  ~/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples nvcr.io/nvidia/deepstream-l4t:6.1-iot

執(zhí)行之后,會發(fā)現(xiàn)命令終端并未進(jìn)入容器里面,依舊在本機(jī)(容器外)的狀態(tài),現(xiàn)在執(zhí)行 “docker ps” 指令,會看到如以下的狀態(tài):

21fb054e-19eb-11ed-ba43-dac502259ad0.png

2216237e-19eb-11ed-ba43-dac502259ad0.png

這里顯示有個名為 “ds_python” 的容器處于運(yùn)行狀態(tài),但是我們還沒有進(jìn)入這個容器的操作環(huán)境中。

2、使用 docker exec 指令進(jìn)入容器:

現(xiàn)在以 deepstream-l4t:6.1-iot 創(chuàng)建的 ds_python 容器已經(jīng)在后臺啟動,我們只要使用 “docker exec” 指令就能進(jìn)入容器內(nèi)操作,請執(zhí)行以下指令:

docker  exec  -it  ds_python  bash

這樣就能進(jìn)到容器里面?,F(xiàn)在試試在容器內(nèi)做些事情,例如創(chuàng)建一個目錄、添加一個文件,然后執(zhí)行 “exit” 退出容器,然后再執(zhí)行前面的指令重新進(jìn)入容器內(nèi),檢查看看剛剛所做的修改應(yīng)該還存在,這樣就能確保我們?yōu)槿萜靼惭b的內(nèi)容可以保留。

3、重啟系統(tǒng)之后的容器啟動:

這種容器創(chuàng)建的方式,在系統(tǒng)重啟之后還能保留前面的設(shè)定嗎?重啟一次系統(tǒng)就知道了,然后執(zhí)行 “docker ps” 指令檢查狀態(tài),發(fā)現(xiàn)看不到前面所創(chuàng)建的 ds_python 容器了,怎么辦呢?

不用緊張,現(xiàn)在執(zhí)行 “docker ps -a” 指令,就會發(fā)現(xiàn)這個容器依舊存在于背景資源中,只是沒有啟動而已,現(xiàn)在執(zhí)行以下指令:

docker  start  ds_pythondockerps

現(xiàn)在再重新執(zhí)行下面指令,就能進(jìn)入容器里:

docker  exec  -it  ds_python  bash

再檢查看看前面所做的修改是否依然存在?現(xiàn)在就能確認(rèn)這種方式能將容器的修改長期保留,是一種更加實在的用法。

4、為容器安裝 Python 開發(fā)環(huán)境:

現(xiàn)在可以在容器內(nèi)按照 <https://github.com/NVIDIA-AI-IOT/deepstream_python_apps>“HOW-TO Guide” 安裝步驟,調(diào)試 DeepStream 的 Python 開發(fā)環(huán)境:

  • 安裝依賴庫:

如果 Jetson 的操作系統(tǒng)是 Ubuntu 20.04(JetPack 5.0 以上),請執(zhí)行以下的依賴庫安裝步驟:

apt install python3-gi python3-dev python3-gst-1.0 python-gi-dev git python-dev python3 python3-pip python3.8-dev cmake g++ build-essential libglib2.0-dev libglib2.0-dev-binlibgstreamer1.0-devlibtoolm4autoconfautomakelibgirepository1.0-devlibcairo2-dev

  • 從 GITHUB 倉下載源碼到指定目錄:

cd sourcesgit clone https://github.com/NVIDIA-AI-IOT/deepstream_python_appscd deepstream_python_appsgitsubmoduleupdate--init

  • 安裝 Gst-Python

apt update apt-get install -y apt-transport-https ca-certificates -yupdate-ca-certificatescd  3rdparty/gst-python/./autogen.shmake&&makeinstall

  • 安裝PyBinding:

請參照如下鏈接:

現(xiàn)在就完成了 Python 環(huán)境的配置。

5、測試 Python 范例

要驗證環(huán)境是否調(diào)試完成的最簡單方法,就是執(zhí)行一個最基礎(chǔ)的 deepstream-test1 范例,請在容器內(nèi)執(zhí)行以下指令:

cd  /opt/nvidia/deepstream/deepstream/cd  sources/deepstream_python_apps/apps/deepstream-test1./deepstream_test_1.py../../../../samples/streams/sample_720p.h26

正常運(yùn)行會看到如下圖的執(zhí)行結(jié)果。

這樣就表示 DeepStream 容器的 Python 開發(fā)環(huán)境已經(jīng)安裝成功。

6、重復(fù)使用調(diào)試好的容器:

接下來就是要將前面調(diào)試好的容器環(huán)境存儲起來,以后就不需要每次調(diào)試一次環(huán)境。這部分分成三個階段:

(1)臨時性保存:

事實上前面使用 “-id” 指令之后,這個容器就會一直保留在背景中執(zhí)行,即便重啟系統(tǒng)后也是存在的,如同前面所提供的,只要執(zhí)行以下指令就能重新進(jìn)入這個容器:

sudo xhost +si:localuser:rootdockerstartds_python&&dockerexec-itds_pythonbash

(2)儲存成 Docker 鏡像:

現(xiàn)在需要在打開一個命令終端,使用 “docker commit <容器名> <鏡像名>” 指令,將目前執(zhí)行的容器存成一個鏡像,請執(zhí)行以下指令:

docker  commit  ds_python  deepstream-l4t:6.1-python

現(xiàn)在執(zhí)行 “docker images” 指令,可以看到多了一個 “deepstream-l4t:6.1-python” 鏡像,如下圖所示:

227771ec-19eb-11ed-ba43-dac502259ad0.png

只要不重裝系統(tǒng)或者刪除這個鏡像,那么這個鏡像就會一直保留在系統(tǒng)里面,以后如果需要再次使用,只要執(zhí)行以下指令即可:

sudo xhost +si:localuser:rootsudodockerrun-it--rm--net=host--runtimenvidia-eDISPLAY=$DISPLAY-w/opt/nvidia/deepstream/deepstream-v/tmp/.X11-unix/:/tmp/.X11-unix-v~/nvme/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources-v~/nvme/deepstream/samples:/opt/nvidia/deepstream/deepstream/samplesdeepstream-l4t:6.1-python

或者可以同時啟動多個獨立的 Python 環(huán)境 DeepStream 容器,如下指令:

sudo xhost +si:localuser:rootsudodockerrun-id--name=ds_python2--net=host--runtimenvidia-eDISPLAY=$DISPLAY-w/opt/nvidia/deepstream/deepstream-v/tmp/.X11-unix/:/tmp/.X11-unix-v~/nvme/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources-v~/nvme/deepstream/samples:/opt/nvidia/deepstream/deepstream/samplesdeepstream-l4t:6.1-python

(3)導(dǎo)出成文件:

最保險的方式,就是將這個 deepstream-l4t:6.1-python 鏡像導(dǎo)出成文件,自行保存好,這樣即便系統(tǒng)重新安裝后,也能直接從這個文件載入鏡像,然后開啟工作容器:

# 將鏡像導(dǎo)出成文件sudo  docker  save  deepstream-l4t:6.1-python  -o  jp50dp_ds61_python# 將文件載入成鏡像sudodockerload-ijp50dp_ds61_python

現(xiàn)在,這個導(dǎo)出的 jp50dp_ds61_python 壓縮文件,也能部署到其他 JetPack5.0 DP 所安裝的 Jetson 設(shè)備上使用,不需要在每臺機(jī)器上重復(fù)調(diào)試 Python 開發(fā)環(huán)境。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    4793

    瀏覽量

    102421
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4752

    瀏覽量

    84066

原文標(biāo)題:NVIDIA Jetson 系列文章(7):配置DS容器Python開發(fā)環(huán)境

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    python環(huán)境變量的配置pip

    Python環(huán)境變量的配置和使用是每個Python開發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細(xì)介紹如何正確
    的頭像 發(fā)表于 12-15 15:41 ?2098次閱讀

    python開發(fā)環(huán)境

    誰有python開發(fā)環(huán)境,32位的軟件開發(fā)環(huán)境,誰可以提供一下,謝謝!
    發(fā)表于 01-09 20:39

    構(gòu)建Python開發(fā)環(huán)境的方法

    本系列教程將向大家講述,在自己的計算機(jī)上構(gòu)建完善的嵌入式系統(tǒng)開發(fā)環(huán)境的方法。本文將向大家講述構(gòu)建Python開發(fā)環(huán)境的方法。
    發(fā)表于 11-08 08:01

    1.2 Python 開發(fā)環(huán)境的搭建

    運(yùn)行后,在下面就會彈出一個 Run 窗口,你在執(zhí)行 Python 腳本時,所有的輸出內(nèi)容,都會出現(xiàn)在這里。至此, PyCharm 這個非常好用的集成開發(fā)環(huán)境配置完成了,后面我們就要正
    發(fā)表于 02-16 18:29

    python如何配置虛擬環(huán)境?

    python 的虛擬環(huán)境可以為一個 python 項目提供獨立的解釋環(huán)境、依賴包等資源,既能夠很好的隔離不同項目使用不同 python 版本
    發(fā)表于 01-07 17:12 ?897次閱讀

    推薦幾種好用的Python集成開發(fā)環(huán)境

    歡迎。它是一個開源軟件并遵循GPL協(xié)議,所以你可以免費(fèi)的使用它。雖然VIM是最好的文本編輯器,但是它提供的功能不亞于此,經(jīng)過正確的配置后它可以成為一個全功能的Python開發(fā)環(huán)境。此外
    發(fā)表于 02-15 17:43 ?609次閱讀

    Python語言介紹及開發(fā)環(huán)境

    Python語言介紹及開發(fā)環(huán)境說明。
    發(fā)表于 04-26 09:51 ?9次下載

    Python版test1實戰(zhàn)說明

    上一篇文章已經(jīng)帶著大家安裝 DeepStreamPython 開發(fā)環(huán)境,并且執(zhí)行最簡單的 deepstream-test1.py,讓大
    的頭像 發(fā)表于 10-09 14:28 ?1629次閱讀

    DeepStream Samples版的操作環(huán)境調(diào)試過程

    NVIDIA 的 DeepStream 是目前業(yè)界最好開發(fā)而且功能強(qiáng)大的 AI 視頻分析工具,在 NGC 上 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstrea
    的頭像 發(fā)表于 08-03 10:18 ?1342次閱讀

    DeepStream容器執(zhí)行Python開發(fā)操作

    前面一篇文章已經(jīng)帶著大家將 DeepStream 容器配置 Python 使用環(huán)境,本文的重點就是繼續(xù)執(zhí)行實際的
    的頭像 發(fā)表于 08-17 10:22 ?1771次閱讀

    容器接入USB攝像頭

    前面教大家使用 DeepStream 的 Docker 鏡像去創(chuàng)建自己的 Python 工作環(huán)境,其好處是即使 Jetson 設(shè)備需要使用 JetPack 重新安裝系統(tǒng),我們只要重新啟動這個 Docker
    的頭像 發(fā)表于 08-31 09:35 ?1456次閱讀

    如何測試Python環(huán)境

    在編程中,測試是一項重要的工作,可以幫助我們驗證代碼的正確性和穩(wěn)定性。在Python編程環(huán)境中,同樣需要進(jìn)行測試來確保Python的安裝和配置是正確的。在本篇文章中,我們將介紹如何測試
    的頭像 發(fā)表于 04-14 12:14 ?4701次閱讀

    如何配置Python環(huán)境變量

    配置Python環(huán)境變量是在安裝Python解釋器后的一項重要步驟,它允許您在任何位置都可以通過命令行或腳本運(yùn)行Python解釋器,使
    的頭像 發(fā)表于 04-14 12:16 ?2w次閱讀

    pycharm怎么配置python環(huán)境變量

    PyCharm 是一種以 Python 為主的集成開發(fā)環(huán)境 (IDE),它提供了一系列的功能用于開發(fā)、調(diào)試、測試和部署 Python 程序。
    的頭像 發(fā)表于 11-29 14:56 ?2216次閱讀

    python運(yùn)行環(huán)境的安裝和配置

    Python是一種非常流行的編程語言,廣泛應(yīng)用于科學(xué)計算、Web開發(fā)、人工智能等領(lǐng)域。為了能夠正常運(yùn)行Python程序,我們需要先安裝和配置Pyth
    的頭像 發(fā)表于 11-29 16:17 ?931次閱讀