VisualStudio Codeのワークスペースに$PYTHONPATH
変数を正しく設定するにはどうすればよいですか?
背景情報
GNURadioの2つのバージョンをインストールしました。
Linux Mintパッケージマネージャーによって/usr/lib/python2.7/dist-packages/gnuradio
にインストールされたGNURadioバージョン3.7.11
PyBOMBSによって/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages/gnuradio
にインストールされたGNURadioバージョン3.7.13.4(私のプレフィックスディレクトリは~/Documents/gr13/default
)
setup_env.sh
スクリプト(特に/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages
を$PYTHONPATH
に追加)を実行してからpythonを起動した後にのみ、GNURadioバージョンの新しいバージョンを使用できます。ターミナルで
tejul@Wacom:~/Documents/gr13/default$ ls
bin etc include lib libexec setup_env.sh share src
tejul@Wacom:~/Documents/gr13/default$ source ./setup_env.sh
tejul@Wacom:~/Documents/gr13/default$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> gr.version()
'3.7.13.4'
>>>
$ PYTHONPATH pythonを変更することなく-当然-GNURadioの古いバージョンをインポートします。
VisualStudio CodeのGNURadioの新しいバージョン用のpythonスクリプトを作成、実行、およびデバッグしたい。 VSCodeの pythonインタープリター 、 workspaces 、および environments の選択を理解しようとしています。
私が理解している限り、VSCodeワークスペース設定python.pythonPath
は、環境変数$PYTHONPATH
と混同しないでください。 python.pythonPath
は、コードのデバッグまたは実行に使用されるpythonインタープリターへのパスであり、$PYTHONPATH
はpythonがsearchに使用する環境変数ですモジュール用。
PyBOMBSが独自のpythonインタープリターをプレフィックスディレクトリにインストールしなかったようです。したがって、/usr/bin/python2.7
にある通常のpythonインタープリターでVSCodeを使用する必要があります。そのため、VSCodeのpython.pythonPath
を再定義するか、別のpythonインタープリターを選択しても役に立ちません。
VSCodeに環境変数$PYTHONPATH
の独自バージョンを使用させる必要があります。これにより、通常のpythonインタープリターに/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages
からモジュールをインポートするように指示されます。
問題
ドキュメント に続いて、pythonがモジュールをインポートする場所の優先順位を設定するワークスペースディレクトリに独自の.env
ファイルを作成しました。残念ながら、pythonインタープリターには影響しません。
ここで私が間違っていることを見ることができますか?私も試しました:
/home/tejul/Documents/gr13/default/lib/python2.7
に設定すると、これは役に立ちませんでしたPYTHONPATH
の代わりに変数$PYTHONPATH
を呼び出すと、これは役に立ちませんでした.env
ファイルを変更するたびにVSCodeを再起動しましたが、これは役に立ちませんでしたPYTHONPATH="/home/tejul/Documents/gr13/default/lib/python2.7:/usr/lib/python2.7"
、これは役に立たなかったOPは、.envファイルのパス構文と、いくつかのカスタムモジュールファイルを見つけて読み取るように設定されたvscodeについて質問したようです。私の問題は、スクリプトでインポートするためのカスタムモジュールをコードで見つけたいという点で似ていました。 python環境内のフォルダーにカスタムモジュールを配置したくありませんでした。また、Windows環境変数のユーザー変数のPYTHONPATHとして1つ以上のパスを設定することも避けたいと思っていましたが、これを実行したい場合は機能します。私はWindows 10のvscodeで働いています。
1)構文:
a)envファイルで次のパス構文が機能することがわかりました。
PYTHONPATH = C:/ 0APPS/PYTHON/_MODULES
私の.pyモジュールファイルはこのフォルダーにあります。
b)#.envファイル内のコメントに対して機能します。
2)VSCODEセットアップ:次のように動作することがわかりました。
a)#2で述べたsunewのように私の設定:vscodeのエクスプローラーを使用して、選択したプロジェクトワークスペースフォルダーを開きます。私にとってはQ:\ 420 PYTHON
b)envファイルにvscode.envファイルなどの名前を付け、ワークスペースの最上位にあるそのフォルダーに配置します。
c)vscode設定を開き、.envを検索します。Extensions> Pythonの下に「Python:env file」があります。ボックスを編集して、.envの直前にenvファイル名を追加します。例えば$ {workspaceFolder} /vscode.env
d)custom_modulenameのインポートが動作するようになりました-python対話型ウィンドウおよびスクリプトで。
.envでPYTHONPATHを設定するとうまくいきます。効果は、vscodeおよびそれが実行するツール(pylintなど)にのみ適用されることに注意してください。
私の状況:pipインストール可能パッケージではなく、単にソースフォルダーであるプロジェクトがあります。 (歴史的な理由から...)
myproject/src
プロジェクトには、pip requireファイルで定義された依存関係があります。
私のセットアップ:
myproject
でvscodeを開きます-これがvscodeの「プロジェクト」のルートになります。PYTHONPATH=./src:${PYTHONPATH}