0

Django をカスタムの場所にインストールしたいのですが、distutils のドキュメントを読みましたが、次のような方法でホーム ディレクトリにインストールできるはずです (解凍された Django tarball から実行した場合)。

> python setup.py install --home=~/code/packages/install --install-purelib=modules --install-platlib=modules --install-scripts=scripts --install-data=data 

ただし、これを実行するたびに、ホームパスと個別の要素パスを連結していないように見えるため、単純に終了します

modules/
scripts/
data/ 

展開された tar ボール ディレクトリ。つまり、モジュール、スクリプトなどを、指定された --home に対する相対パスではなく、ローカル ディレクトリへの単純な相対パスとして扱っているようです。

--prefix を使用してルートを設定し、setup.cfg を使用してみましたが、何も機能しないようです。--prefix および --home は、他のオーバーライドなしで単独で機能しますが、 --install-xxx オーバーライドと一緒に使用すると機能しません。

私はおそらく何か愚かなことをしている、またはドキュメントが間違っているか、バグです。どんな助けも大いに義務付けられています。

4

4 に答える 4

2

基本的にPythonパッケージのサイロを作成するには、 VirtualenvPipを検討することを強くお勧めします。

Pinaxプロジェクトは、他の人が使用できるように要件をまとめるためにこれを独占的に使用しており、再利用可能なアプリの分野でデファクトスタンダードになりつつあります。

于 2009-10-29T16:44:14.863 に答える
1

さて、私はdistutilsのソースコードを見て、何が起こっているのかを確認してきました-distutils.command.installすべてのパス名操作を行います。

ドキュメントが実際には正しくないことが判明しました。--install-xxxxスタイルのオプションが指定されている場合は常に、--homeまたはから派生する可能性のある値を完全にオーバーライドします。--prefixコードは、パスの単純な連結を行いません

ただし、それが行うことは、一連の特別な変数の変数置換です。特に私が興味を持っているのは$baseです。コマンドラインで使用すると、オーバーライドを定義できます。distutilsは、すべてのオカレンスを指定されたものに置き換えます--home。ただし、BASHが環境変数として展開しないように、ファイル名を引用符で囲む必要があることに注意してください。

したがって、最初に使用したコマンドラインは次のようになります。

python setup.py install --home=/home/andre/code/packages/install --install-purelib='$base/modules' \
  --install-platlib='$base/modules' --install-scripts='$base/scripts' --install-data='$base/data'

私以外の誰かがそれが役に立つと思うことを願っています!

于 2009-10-29T16:54:04.540 に答える
0

簡単なチェックとして、交換をお勧めします

~/code/packages/install

/full_path_to_your_user/code/packages/install

于 2009-10-29T13:22:36.510 に答える
0

ホームディレクトリに置きたいだけなら、インストールする必要はまったくありません。コンテナー ディレクトリが pythonpath のどこかにあることを確認し、django/bin のスクリプトをメイン PATH のどこかに移動します (またはそのディレクトリをパスに追加します)。

于 2009-10-29T13:42:56.360 に答える