Python 仮想環境を実行する Bash スクリプトは実行されません。

Python 仮想環境を実行する Bash スクリプトは実行されません。

Python仮想環境を実行しているスクリプトに次の呼び出しをラップしようとしています。

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ source /home/lucas/Dropbox/projects/competitive-programming/kaggle/venv/ipython-notebook/bin/activate                                
(ipython-notebook) [lucas@lucas-ThinkPad-W520]/home/lucas/bin$ deactivate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ 

だから私は次のbashスクリプトを作成して実行しました。

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ cat venv_python3.sh 
#!/bin/bash
#  /usr/bin/env bash
echo "starting python3 venv"
source /home/lucas/Dropbox/projects/competitiveprogramming/kaggle/venv/ipythonnotebook/bin/activate
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ venv_python3.sh 
starting python3 venv                                                                            
[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ 

ご覧のとおり、呼び出しを実行しechoますが、仮想環境を起動しません。私は何を逃したことがありませんか?

いくつかのチュートリアルを見ましたが、欠落しているものが見つかりませんでした。また、/home/lucas/bin/私のスクリプトの場所であるmyはmyにあります$PATH

ファイルの権限は次のとおりです。

[lucas@lucas-ThinkPad-W520]/home/lucas/bin$ ls -la
total 52
drwxr-xr-x  3 lucas lucas 4096 Jun 28 23:14 .
drwxr-xr-x 79 lucas lucas 4096 Jun 28 23:13 ..
-rwxrw-r--  1 lucas lucas  164 Jun 28 23:13 venv_python3.sh

答え1

スクリプトの上部にはactivateこれをインポートする必要があり、直接実行することはできません。それがすることは、bashファイルソースセッションで何かを変更することです。

あなたの場合、これはスクリプトを実行して呼び出されbashます。bashvenv_python3.shいいえインタラクティブに入力しbashています。

あなたができることは、あなたのために購入を実行するbash機能(またはエイリアス)を作成することです。これにより、「購入」はあなたの側でインタラクティブに行われますbash

しかし、一度見てください。仮想環境ラッパー、複数のvirtualenvタスクをはるかに簡単に作成し、最初にこのスクリプトを作成したときに発生した「問題」を解決できます。

関連情報