Pythonでsys.pathにファイルパスを永続的に追加する


97

example_file.py他のさまざまなファイルから使用したいというファイルがあったので、このファイルを別のファイルに追加example_file.pysys.pathてインポートし、そのファイルを使用することにしました。そのために、IPythonで次のコードを実行しました。

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

追加したばかりのパスが表示され、次のように別のディレクトリパスからこのファイルをインポートしようとすると、

import example_file

それは正常に機能しましたが、IPythonから出て再度入力し、を確認するとsys.path、追加したパスが存在しないことがわかりました。Pythonでsys.pathにパスを永続的に追加するにはどうすればよいですか?


3
コードを適切なパッケージにして、easy_installableにし、残りの人生をいじくり回すのではなく幸せにします。それとは別に:すべてのドキュメントsys.path.append()は、ファイルを含むディレクトリではなく、ファイルへの単一パスを受け入れることを明確に伝えています。
Andreas Jung



システムパスをと混同しないでくださいPYTHONPATH
Burhan Khalid 2012

回答:


95

いくつかの方法があります。最も簡単な方法の1つは、my-paths.pthファイルを作成することです(ここで説明しています)。これは.pth、システムsite-packagesディレクトリに配置する拡張子を持つファイルです。ファイルの各行に1つのディレクトリ名を置くので、そこに行を入れる/path/to/the/と、そのディレクトリがパスに追加されます。

PYTHONPATH環境変数を使用することもできます。これは、システムのPATH変数に似ていますが、に追加されるディレクトリが含まれていsys.pathます。ドキュメントを参照してください。

何をしても、ファイルでsys.pathはなくディレクトリが含まれていることに注意してください。「にファイルを追加する」ことはできませんsys.path。常にそのディレクトリを追加すると、ファイルをインポートできます。


1
わかりました、ありがとうございます。別の場所からファイルをインポートしたときに、ファイルとその機能で構成されるディレクトリを追加しました。問題は、ipythonから抜け出し、再びパスしてパスを確認したところ、表示されません。私はコードを入力するたびにそれをしたくありません。ディレクトリパスをsys.pathに永続的に追加します。これを行う方法
Shiva Krishna Bavandla

@Kouripm:あなたのコメントは、あなたが実際に私の提案をフォローしていないことを示唆しているのではなく、上にリンクされている重複した投稿の提案も示唆しています。
BrenBarn 2012

1
siteパッケージは完璧でした。
Zeinab Abbasimazar 2017

8
sys.path.append('C:\\python34\\lib\\site-packages')ありがとうの私の問題を修正しました!
タイラーリンデル、

後世のために:.pthファイルは、サイトモジュールのドキュメントがと呼ぶものpath configuration fileです。パス構成ファイルに関する注意事項:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran

1

この方法は私にとってうまくいきました:

好きなパスを追加する:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

確認: 'export' cmdを実行して出力を確認するか、次のcmdを使用して確認できます。

python -c "import sys; print(sys.path)"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.