パス変数とスクリプトのshebangが正しいPythonバージョンを実行していません。

パス変数とスクリプトのshebangが正しいPythonバージョンを実行していません。

問題の説明:

Bashスクリプトは、名前リストの各名前に対して新しい画面セッションを作成するために使用されます。各名前に対して、その名前を入力として使用してPythonスクリプトが実行されます。 Bashスクリプトは、正しいPythonバージョン(anacondaパッケージのPython 3)を含むパスを設定します。

#!/bin/sh

export PATH=~/anaconda3/bin/python:$PATH

while read p; do
  screen -dm -S $p bash -c "cd /inside/home/thjmatth/essential; python3 essentialpairs_ttest_tissue_1.py; exec sh"
done <cells.txt

上記のようにパスを設定すると、正しいバージョンのPythonを実行できないため、実行したいPythonスクリプトに次のshebangを追加しました.

#!~/anaconda3/bin/python python3

まだサイコロなし:使用して/usr/bin/pythonはいけないときでもまだ使用されています。このプログラムに指定したパスに従ってPythonバージョンを実行させるにはどうすればよいですか?

1を試してください:

新しい四方:

#!/inside/home/thjmatth/anaconda3/bin/python/

新しいbashスクリプト:

#!/bin/sh

export PATH=~/anaconda3/bin/python:$PATH

while read p; do
  screen -dm -S $p bash -c "cd /inside/home/thjmatth/essential; python3 essentialpairs_ttest_tissue_1.py; exec sh"
done <cells.txt

Pythonスクリプトに対する新しい権限:

chmod +x essentialpairs_ttest_tissue_1.py

間違い:

bash: python3: command not found

この画面でどのPythonを実行するとまだ表示されますか?/usr/bin/python

解決策:

上記の試み1と同じですが、bashスクリプトの3行を変更して実行可能ファイルの代わりにディレクトリにします。

export PATH=~/anaconda3/bin/python:$PATH

ベストアンサー1

export PATH=~/anaconda3/bin/python:$PATH

実行可能ファイルのパスのようです。PATHディレクトリは次のように含める必要があります。

export PATH=~/anaconda3/bin:$PATH

#!~/anaconda3/bin/python python3
  1. Shebangラインには実際のパスが必要で、実行されません。チルダ拡張(それはあなたの殻にあります)。実行可能ファイルの物理パスを/
  2. ~/anaconda3/bin/pythonpython3Shebang 行は引数の後にスクリプト名を使用して実行されます。おそらくこれを望まないで実行したり、python代わりにpython3

    #!/home/thomas/anaconda3/bin/python
    

screen -dm -S $p bash -c "cd /inside/home/thjmatth/essential; python3 essentialpairs_ttest_tissue_1.py; exec sh"

Shebang 行を更新した後もこの行を実行し続けると無視されます。 !とは異なり、python3ユーザーが作成した行が実行され、スクリプトが順番に実行され、Shebang行はコメントにスキップされます。スクリプトを実行可能にすると()直接実行できます。PATHpythonchmod +x essentialpairs_ttest_tissue_1.py

./essentialpairs_ttest_tissue_1.py

そしてシェバンラインが処理されます。


この場合、次のことができます。おそらく変数をリセットする Bash 起動設定がない場合は、PATH最初の部分で変数を変更します。実行可能ファイル名がある場合は、その名前を使用するようにコマンドラインをpython更新する必要があります。screenpython3

おすすめ記事