web-dev-qa-db-ja.com

Visual StudioコードのPYTHONPATHを正しく設定する方法

VisualStudio Codeのワークスペースに$PYTHONPATH変数を正しく設定するにはどうすればよいですか?

背景情報

GNURadioの2つのバージョンをインストールしました。

  1. Linux Mintパッケージマネージャーによって/usr/lib/python2.7/dist-packages/gnuradioにインストールされたGNURadioバージョン3.7.11

  2. 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インタープリターには影響しません。

Showing that VSCode is ignoring my $PYTHONPATH setting

ここで私が間違っていることを見ることができますか?私も試しました:

  • PYTHONPATHを1つ上のフォルダーレベル、つまり/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"、これは役に立たなかった
9
Zababa

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対話型ウィンドウおよびスクリプトで。

2
Graham Hobbs

.envでPYTHONPATHを設定するとうまくいきます。効果は、vscodeおよびそれが実行するツール(pylintなど)にのみ適用されることに注意してください。

私の状況:pipインストール可能パッケージではなく、単にソースフォルダーであるプロジェクトがあります。 (歴史的な理由から...)

myproject/src

プロジェクトには、pip requireファイルで定義された依存関係があります。

私のセットアップ:

  1. Virtualenvを作成し、requiresファイルからパッケージをインストールします。
  2. フォルダmyprojectでvscodeを開きます-これがvscodeの「プロジェクト」のルートになります。
  3. Vscodeがpythonインタープリターとしてvirtualenvを使用するように指示します。これにより、pipでインストールされた依存関係のインポートが機能します。 (リンター、インテリセンスなど)
  4. また、vscodeのリンター(特にpylint)でプロジェクトソースからのインポートを機能させるには、このコンテンツで.envを追加し、プロジェクトソースフォルダーをPYTHONPATHに追加します。
PYTHONPATH=./src:${PYTHONPATH}
2
sunew