簡體   English   中英

在 Windows 的 bash 文件中運行 python 腳本

[英]Run python script inside bash file in Windows

我的任務是運行由其他人開發的腳本。 這很簡單,但它是一個 bash 腳本,我幾乎從未接觸過 Linux,所以我不確定如何進行。 我能夠安裝 WLS,所以我可以在bash上運行 bash,但現在我必須在 ZD5164BFC6B7EE9A3B755DDZ 腳本中運行特定的 python 腳本。 腳本是這樣的:

#!/bin/bash
BASE_DIR=dir

find $BASE_DIR -type f | grep '\.pdf' | while read pdf_filename; do
  filebase=`echo $pdf_filename | cut -d '.' -f 1`
  txt_filename="$filebase.txt"
  echo "Processing $pdf_filename..."
  pdf2txt.py $pdf_filename > $txt_filename
  echo "Done!"

done

它應該運行pdf2txt.py腳本,但我收到此錯誤:

convert_all.sh: line 8: pdf2txt.py: command not found

所以,我不確定如何將 bash 連接到我的 Python 安裝,我猜它找不到它。 理想情況下,我希望將其鏈接到該項目的虛擬環境。 關於如何進行的任何想法?

編輯:

根據我對@DV82XL 的回復,這是我當前的錯誤:

/mnt/c/Users/jeco_/Desktop/Otros repositorios/sesgo_medios/Code/hello.py: line 1: $'\r': command not found
/mnt/c/Users/jeco_/Desktop/Otros repositorios/sesgo_medios/Code/hello.py: line 2: syntax error near unexpected token `"hello world"'
/mnt/c/Users/jeco_/Desktop/Otros repositorios/sesgo_medios/Code/hello.py: line 2: `print("hello world")'

能否將 bash 腳本轉換為 Python? 這樣,您可以在沒有 WSL 的情況下輕松地在 Windows 或 Linux 中運行。

如果必須在 WSL 中運行 bash 腳本,請確保在 WSL 中安裝了 Python:

  • type -a pythontype -a python3 這將為您提供解釋器路徑。

如果沒有出現,則需要在 WSL 上安裝 Python:

sudo apt update && upgrade
sudo apt install python3 python3-pip ipython3

然后做這些事情:

  1. 通過鍵入echo $PATH確保 Python 解釋器位於 PATH 環境變量中。 如果它不存在,請通過鍵入export PATH="$PATH:/usr/bin/python3"添加它或將其添加到 ~/.profile。 在 Linux 上,通常默認包含它。
  2. 如果要從任何地方運行腳本,請將腳本的路徑添加到 PATH env var
  3. 鍵入python --versionpython3 --version以獲取版本並確保 python 路徑設置正確。
  4. 在 python 腳本的開頭添加帶有解釋器路徑的 shebang:
    • #!/path/to/interpreter
    • 通常: #!/usr/bin/python3
    • 對於特定的解釋器版本: #./usr/bin/python2.7
  5. 使腳本可執行: chmod +x pdf2txt.py

現在您應該能夠直接運行pdf2txt.py而不是python pdf2txt.py

提示:在 WSL 中,如果需要,可以在/mnt/c/Users/<user>/path/to/file訪問 Windows 文件。

如果這不起作用,請告訴我們您正在運行哪個 Linux 發行版/版本以及這些腳本需要什么版本的 Python。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM