解決執行 Python 遇到問題 /usr/bin/env: ‘python3\r’: No such file or directory

執行 Docker 的 Python 程式,卻遇到錯誤訊息「/usr/bin/env: ‘python3\r’: No such file or directory」。解決方式是將修改 Python 程式碼的換行符號從 Windows 的 CRLF 改為 UNIX 的 LF。

Python icon by Icons8


問題狀況

在 Windows 作業系統執行包在 Docker 容器內的 Python 應用程式,卻遇到錯誤訊息

$ docker run -it cloudscraper https://www.google.com

/usr/bin/env: ‘python3\r’: No such file or directory

解決方式

網路論壇文章 command line - /usr/bin/env: 'python3 ': No such file or directory error is throwing in Windows - Stack Overflow 提到這不是 Python 程式碼問題,而是檔案編碼問題。發生錯誤的 Python 檔案使用 Windows 換行符號 CRLF ,需要改成 UNIX 換行符號 LF。

以下說明,怎樣使用 VSCodium (開放原始碼版本的 VSCode) 程式碼編輯軟體修改換行符號:

1. 下載與安裝 VSCodium

2. 打開 Dockerfile 檔案,知道 ENTRYPOINT 是 scraper.py 檔案

ENTRYPOINT ["/scraper.py"]

3. 使用 VSCodium 程式碼編輯軟體打開 scraper.py 檔案

4. VSCodium 右下角顯示檔案的換行符號是 CRLF


5. 按一下 CRLF ,出現切換換行符號的選單。請改成 UNIX 換行符號 LF

6. 右下角顯示目前的換行符號 LF

7. 儲存檔案後,需要重新產生 Docker image 才能生效。

參考資料




留言