Запустить python скрипт внутри bash файла в Windows - PullRequest
0 голосов
/ 29 мая 2020

Мне было поручено запустить сценарий, разработанный кем-то другим. Это довольно просто, но это сценарий bash, и я почти никогда не касался Linux, поэтому я не уверен, что делать дальше. Мне удалось установить WLS, чтобы запустить bash на Windows, но теперь мне нужно запустить специальный сценарий c python внутри сценария bash. Сценарий выглядит следующим образом:

#!/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")'

1 Ответ

2 голосов
/ 29 мая 2020

Можете ли вы преобразовать сценарий bash в Python? Таким образом, вы можете легко запустить Windows или Linux без WSL.

Если вам необходимо запустить сценарий bash в WSL, убедитесь, что Python установлен в WSL:

  • Введите type -a python или type -a python3. Это даст вам путь интерпретатора.

Если он не появится, вам нужно будет установить Python на WSL:

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

Затем выполните следующие действия:

  1. Убедитесь, что интерпретатор Python находится в переменной PATH env, набрав echo $PATH. Если его там нет, добавьте его, набрав export PATH="$PATH:/usr/bin/python3", или добавьте в ~ / .profile. На Linux он обычно включен по умолчанию.
  2. Добавьте путь к сценарию в PATH env var, если вы хотите запускать его из любого места
  3. Введите python --version или python3 --version в получить версии и убедиться, что путь python указан правильно.
  4. Добавьте shebang с путем интерпретатора в начало сценария python:
    • #!/path/to/interpreter
    • Обычно: #!/usr/bin/python3
    • Для указанной c версии интерпретатора: #!/usr/bin/python2.7
  5. Сделать скрипт исполняемым: chmod +x pdf2txt.py

Теперь у вас должна быть возможность запускать pdf2txt.py напрямую вместо python pdf2txt.py.

Подсказка: в WSL вы можете получить доступ к своим Windows файлам через /mnt/c/Users/<user>/path/to/file, если вам нужно.

Если это не сработает, сообщите нам, какой Linux дистрибутив / версия вы используете и какая версия Python требуется для этих скриптов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...