![](/img/trans.png)
[英]How do I start in a specified conda environment from a Docker container?
[英]How to Start a Conda Environment with Docker Container
我是docker
新手,如果這是一個愚蠢的問題,我深表歉意。
作為背景,我正在使用無法編輯或更改的 docker 圖像。 我使用docker run [various-args] [image-name]
容器並啟動容器。 If I subsequently run docker exec -it [ID] bash
, I can get a shell going from inside the container and it successfully executes a conda
environment needed for all my python code, so I can just run python script.py
and everything runs okay .
我想自動化這個過程以備將來使用,所以我想把這些命令放到一個腳本中,這樣我就不需要在環境中手動輸入或執行任何東西。 我認為可行的解決方案是:
docker exec -it [ID] bash -c "python script.py"
但這不起作用,導致 python 代碼的導入錯誤。 我的假設是 conda 環境沒有被激活,所以我嘗試執行conda activate my-env
,這會返回一個新的錯誤:
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
所以,我按照說明先運行conda init bash
看看是否有幫助,但這個錯誤最終還是會出現。 最終,如果我先執行 bash shell,然后手動開始運行 python 代碼,一切都很好,但如果我嘗試立即執行所有操作,原因是 conda 無法立即設置。 有沒有辦法在不編輯圖像本身的情況下完成這項工作,或者這是否需要重建圖像?
提前感謝ins!
conda conda activate
function 由 conda conda init
命令添加到.bashrc
的代碼定義。 除非使用-l
( --login
) 標志,否則 Bash 不會獲取.bashrc
。
但是,Conda 並沒有打擾 shell,而是提供了一個在指定環境中執行的 conda conda run
命令。 所以,嘗試類似的東西
docker exec -it [ID] conda run -n my-env python script.py
對於交互式腳本,可能還需要一些額外的conda run
標志,例如--live-stream
或--no-capture-output
。 請參閱conda run -h
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.