PyCharm が常に「コンテンツ ルート」を PYTHONPATH に追加する理由と、その PYTHONPATH は何ですか? 質問する

PyCharm が常に「コンテンツ ルート」を PYTHONPATH に追加する理由と、その PYTHONPATH は何ですか? 質問する

PyCharm がモジュールとパッケージを見つけるために Python が使用するパスをどのように決定するかがわかりません。

まず、設定のチェックを外すと(「Python コンソール」と実行構成の両方で)、 の開始時にプロジェクトのディレクトリが引き続き表示されますsys.path

たとえば、「パスの問題」にプロジェクトがあり、そこに「実行」すると、

import sys
for p in sys.path:
    print p

私は

/Users/Rax/Documents/Projects/pathproblem
... (other things in my PYTHONPATH)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC
/Library/Python/2.7/site-packages

「コンテンツ ルート」をパスから除外するように要求した場合でも、次のようになります。

ここに画像の説明を入力してください

これにより、通常のデプロイメントではインポートに失敗するモジュールのインポートが成功する可能性があります (例: パッケージのビルド時)。

設定を確認すると、次の 2 つのメッセージが表示されます。

/Users/Rax/Documents/Projects/pathproblem
... (other things in my PYTHONPATH)
/Users/Rax/Documents/Projects/pathproblem
...

PyCharmはいつも現在のプロジェクトルートをPYTHONPATHの先頭(とみなされるもの)に追加し、この設定はそれを追加するだけである。また最後に。

(1) PyCharm を設定して、プロジェクト ディレクトリをパッケージ検索パスに (実際に) 追加しないようにするにはどうすればよいですか?

また、私が知る限り、PyCharm の PYTHONPATH は、私のシステムの PYTHONPATH ではなく、Python インタープリターのパス設定の「ユーザーが追加した」エントリ (実際、紛らわしいことに、パス設定の最後にある) です。

(2) PyCharm の PYTHONPATH はどこから来るのでしょうか? これは私のシステムの他の場所で見られる PYTHONPATH ではありません。


ちなみに、PyCharm の Sphinx は「コンテンツ ルート」設定を尊重し、ビルド構成でパスがチェックされている場合にのみコンテンツ ルートを追加します。

ベストアンサー1

まず、設定のチェックを外すと (「Python コンソール」と実行構成の両方で)、sys.path の先頭にプロジェクトのディレクトリが引き続き表示されます。

PyCharm はデフォルトでプロジェクト ルートをパスに追加するので、そうなるはずです。

(1) PyCharm を設定して、プロジェクト ディレクトリをパッケージ検索パスに (実際に) 追加しないようにするにはどうすればよいですか?

私の知る限りでは、それはできません。ただし、コンテンツをルートに追加しない方法があります。ただし、その方法を説明する前に、ディレクトリの現在のルートをパスに追加する理由について説明させてください。Python コンソールを開くと、次のようになります。

                                                ここに画像の説明を入力してください

現在、 というファイルがありfoo.py、そのファイルには という関数があるのでbar、その関数をコンソールに簡単にインポートできます。

ここに画像の説明を入力してください

上の画像からわかるように、PyCharm自動的にcd現在のルートを追加します。これは驚くことではありません。ディレクトリに入り、次のように実行するとpython foo.py暗黙的に現在のルートをパスに追加します。模倣するPython コンソールでこれを実行すると、PyCharm は現在のルートを追加します。

これを避けるには、フォルダを作成するだけでいい。内部現在のルートをソース ルートとしてマークします。

                 ここに画像の説明を入力してください

また、ソース ルートはパスに追加されないので、安心できます。

                    ここに画像の説明を入力してください

(2) PyCharm の PYTHONPATH はどこから来るのでしょうか? これは私のシステムの他の場所で見られる PYTHONPATH ではありません。

これは通訳者の設定によります:

ここに画像の説明を入力してください

一般的に、PYTHONPATHこれは基本的に、標準ライブラリ ファイルとサードパーティ ライブラリ ファイルを格納するすべてのディレクトリのコレクションです。

おすすめ記事