少しぎこちない言葉遣いの質問ですが、基本的には次のとおりです。
- $PYTHONPATH に追加することによってのみ、Python パッケージをアクティブ化できます
- この方法で任意の python パッケージを使用できるようにしたい
- 一部の python パッケージはパッケージ名前空間を使用します
Python パッケージをビルドするためのラッパー スクリプトがありsetup.py --single-version-externally-managed
ます。このビルド プロセスには何でも追加できますが、多数のパッケージのビルドに使用されるため、一般的なものでなければなりません。
通常、ビルド結果を $PYTHONPATH に追加するだけで問題ありません。
しかし、名前空間付きのパッケージ (例: ) では、ファイルを使用するため、指定されたディレクトリにndg-httpsclient
ある場合にのみ機能するように見えます。site-packages
.pth
紛らわしいことに、ndg/__init__.py
名前空間パッケージのボイラープレート コードを含むソースに があります。
__import__('pkg_resources').declare_namespace(__name__)
で直接インポートできるように見えます$PYTHONPATH
が、インストールすると次のように罵倒されます。
Skipping installation of /<some-build-dir>/site-packages/ndg/__init__.py (namespace package)
おそらくそれには正当な理由があると思われますが、.pth ファイルに依存している$PYTHONPATH
ため、技術的な理由で実行できない既知の場所にコピーすることによってのみ、結果を 経由で使用することはできません。また、アプリの初期化に任意の python を挿入することもできません (これsite.addsitedir()
も同様です)。
では、よく知られた場所に配置せずに名前空間モジュールをインポート可能にする方法について私が知らない方法はありますか? あるいは、 setuptools をスキップしないように説得する方法はあり__init__.py
ますか?それは実際に機能しますか?