3
4

2 に答える 2

2

いじり回しはsys.path()苦痛につながります...最新のパッケージテンプレート配布には膨大な情報が含まれており、問題を解決するために部分的に設定されています.

私がすることは、setup.py をセットアップして、すべてのパッケージを特定のサイト パッケージの場所にインストールするか、システムのサイト パッケージにインストールできるかどうかです。前者の場合、ローカル サイト パッケージがシステム/ユーザーの PYTHONPATH に追加されます。後者の場合、何も変更する必要はありません

バッチ ファイルを使用して Python パスを設定することもできます。または、変更された PYTHONPATH を含むシェル スクリプトを指すように python 実行可能ファイルを変更し、python インタープリターを実行します。もちろん、後者は、ユーザーのマシンにアクセスする必要があることを意味しますが、アクセスする必要はありません。ただし、ユーザーがスクリプトのみを実行し、独自のライブラリをインポートしない場合は、スクリプトに独自のラッパーを使用できます。

#!/path/to/my/python

/path/to/my/pythonスクリプトは次のようになります。

#!/bin/sh
PYTHONPATH=/whatever/lib/path:$PYTHONPATH /usr/bin/python $*
于 2013-02-22T14:49:05.287 に答える
1

モジュールを検索するときにPythonの動作を変更できるパスインポートフックを確認する必要があると思います。

たとえば、Pythonプラグイン[1]に対してkdeのscriptengineが行うようなことを試みることができます。に特別なトークンを追加しsys.path(名前の衝突を避けるために乱数に"<plasmaXXXXXX>"するXXXXXXなど)、Pythonがモジュールをインポートしようとして他のパスでモジュールが見つからない場合、それを処理できるインポーターを呼び出します。

より簡単な代替方法はsys.path、ターゲットファイルへのパスを追加して実行するだけのランチャーとしてメインスクリプトを使用することです(これにより、すべてのファイルに行を配置することを安全に回避できsys.path.append(...)ます)。

python2.6 +で動作するさらに別の方法は、ユーザーごとのsite-packagesディレクトリの下にライブラリをインストールすることです。


/usr/share/kde4/apps/plasma_scriptengine_python[1]ソースコードはkdeを使用したLinuxインストールで見つけることができます。

于 2013-02-22T15:01:29.613 に答える