4

Python のドキュメントには、sys.path「環境変数から初期化されPYTHONPATH、さらにインストールに依存するデフォルト」であると記載されています。

しかし、Windowsの「インストールに依存するデフォルト」とは正確には何ですか?

(これはおそらくpythonのコンパイル方法に依存していることはわかっていますが、もし私が持っているのがバイナリしかない場合、デフォルトがどのようにsys.path構築されているかを理解する方法はありますか?)

明確化: 私は「私のものは何sys.pathですか?」と尋ねているのではありません。「Python はどのように sys.path を構築するのですか?」ドキュメンテーションによると、これsys.pathsys.path[0]スクリプトの現在のディレクトリに加えて、Python がPYTHONPATH環境変数で見つけたものと、インストールに依存するいくつかのブードゥー教で構成されています。では、この神秘的なブードゥー教の部分は何ですか?

4

3 に答える 3

6

Praveen Gollakotaがpython sys.path のトラブルシューティングで良い情報を持っているようです(ここに再貼り付け:)

  • 最初に C:\WINNT\system32\python27.zip が追加されます (詳細はPEP273を参照)。

  • 次に追加されるのは、Windows レジストリのエントリです。エントリはレジストリC:\Python27\DLLs;C:\Python27\lib; C:\Python27\lib\plat-win; C:\Python27\lib\lib-tkから取得されます。HOT_KEY_LOCAL_USER/Python/PythonCore/2.7/PythonPath詳細については、こちらの Python ソース コード コメントhttp://svn.python.org/projects/python/trunk/PC/getpathp.c (上記のリンクを見つけるまで、これらのエントリを理解するのが最も困難でした)。

  • 次に、siteパッケージ ドキュメントで説明されているように、sys.pathは と から構築されsys.prefixますsys.exec_prefix。私のコンピューターでは、両方とも を指していC:\Python27ます。デフォルトではlib/site-packagesとにかく検索します。したがって、エントリC:\Python27; C:\Python27\lib\site-packagesは上記のリストに追加されます。

  • 次に、各.pthファイルをアルファベット順に検索します。私はeasy_install.pthpywin32.pthsetuptools.pthサイトパッケージに持っています。これは、物事が奇妙になり始めるところです。.pthファイル内のエントリが単なるディレクトリの場所であれば簡単です。sys.pathそれらは行ごとに追加されるだけです。ただし、にリストされているエントリがリストの先頭にパッケージ リストを追加するようにするeasy_install.pthPython コードがいくつかあります。easy_install.pthsys.path

  • pywin32.pthこの後、期待どおり、のディレクトリ エントリがリストsetuptools.pthの最後に追加されます。sys.path

注: 上記の説明は Windows に関するものですが、Mac などでも同様です。Mac では、ファイルのsite-packagesディレクトリの検索を開始する前に、darwin などの異なる OS デフォルトを追加するだけです。.pth

于 2011-07-14T20:17:02.767 に答える
2

最良の方法は、Python インタープリターで実際のパスを調べることです。

$ python
Python 2.6.6 (r266:84297, Aug 24 2010, 18:13:38) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pprint, sys
>>> pprint.pprint(sys.path)
['',
 'c:\\Python26\\lib\\site-packages\\setuptools-0.6c11-py2.6.egg',
 'c:\\Python26\\lib\\site-packages\\nose-1.0.0-py2.6.egg',
 'C:\\Windows\\system32\\python26.zip',
 'c:\\Python26\\DLLs',
 'c:\\Python26\\lib',
 'c:\\Python26\\lib\\plat-win',
 'c:\\Python26\\lib\\lib-tk',
 'c:\\Python26',
 'c:\\Python26\\lib\\site-packages',
 'c:\\Python26\\lib\\site-packages\\win32',
 'c:\\Python26\\lib\\site-packages\\win32\\lib',
 'c:\\Python26\\lib\\site-packages\\Pythonwin',
 'c:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
于 2011-07-14T19:37:47.833 に答える
1

インポートしsysてから印刷しようとしましたsys.pathか? 私の Windows 7 システムでは、次のものが含まれているようです。

'', 
'C:\\Windows\\system32\\python26.zip', 
'c:\\python26\\DLLs', 
'c:\\python26\\lib', 
'c:\\python26\\lib\\plat-win', 
'c:\\python26\\lib\\lib-tk', 
'c:\\python26', 
'c:\\python26\\lib\\site-packages', 
'c:\\python26\\lib\\site-packages\\win32', 
'c:\\python26\\lib\\site-packages\\win32\\lib', 
'c:\\python26\\lib\\site-packages\\Pythonwin', 
'c:\\python26\\lib\\site-packages\\wx-2.8-msw-unicode'

カスタム PYTHONPATH 変数を設定する必要がなかったため、これは私がインストールしたパッケージに対応しています。

于 2011-07-14T19:38:05.433 に答える