1

少しぎこちない言葉遣いの質問ですが、基本的には次のとおりです。

  • $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ますか?それは実際に機能しますか?

4

0 に答える 0