1. ホーム
  2. python

[解決済み] pyenv 仮想環境下で実行される Python スクリプトに使用するシェバングを指定します。

2023-02-03 17:07:15

質問

Python スクリプトを実行する際に pyenv virtualenv このファイルにはどのような意味があるのでしょうか?

テストケースとして、私のシステム(OSX)のデフォルトのpythonには pandas をインストールしました。pyenvの仮想環境 venv_name が行います。virtualenvからpythonの実行ファイルのパスを取得することを試してみました。

$ pyenv activate venv_name
(venv_name)$ which python
/Users/username/.pyenv/shims/python



そこで、私の例を作ってみました script.py :

#!/Users/username/.pyenv/shims/python
import pandas as pd
print 'success'



しかし、スクリプトを実行しようとすると、エラーが発生しました。

(venv_name) $ ./script.py
./script.py: line 2: import: command not found
./script.py: line 3: print: command not found



コマンドラインでそのパスを実行しても問題なく動作しますが。

(venv_name) $ /Users/username/.pyenv/shims/python script.py
success

(venv_name) $ python script.py # also works
success

このための適切な shebang は何ですか?理想的には、私の現在のvenvが何であれ、pythonを指すような一般的なものが欲しいです。

どのように解決するのですか?

フルパスでインタープリタを呼び出すことがなぜうまくいかないのか、私はいつもそれを使っているのでよくわかりませんが、もしあなたの環境にあるpythonインタープリタを使いたいのであれば、そうすべきです。

#!/usr/bin/env python

このようにして、使用するpythonインタプリタを環境から検索します。