p番目のファイルから実行されたインポートステートメントは正常に実行されているようです。しかし、この方法でインポートされたモジュールにはアクセスできないようです。
この魔術は何ですか?
p番目のファイルから実行されたインポートステートメントは正常に実行されているようです。しかし、この方法でインポートされたモジュールにはアクセスできないようです。
この魔術は何ですか?
あなたのコメントから、-filesの目的についての混乱のために、いくつかのモジュールでNameError例外が発生していると推測しています.pth
。
pth
の略ですpath
。目的は、パスを追加することですsys.path
(pythonpath-Pythonがインポート中にモジュールを見つけるために使用するパス)。site
モジュールのドキュメントを参照してください。
で始まる行にimport
は任意のコードを含めることができますが、通常は変更されsys.path
ます。たとえば、setuptools
機械:
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
もう1つの一般的なケースは、.pth
-filesを使用して「名前空間」パッケージを実装する場合です。
import sys,types,os; p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('zope',)); ie = os.path.exists(os.path.join(p,'__init__.py')); m = not ie and sys.modules.setdefault('zope',types.ModuleType('zope')); mp = (m or []) and m.__dict__.setdefault('__path__',[]); (p not in mp) and mp.append(p)
.pth
-モジュール名をコードに表示するためのファイルはありません。インポートsome_module
するには、使用する各モジュールの上部に次を追加します。
import some_module