2012-05-05 9 views
12

自分のファイルをカスタムディレクトリにインストールするsetup.pyを作成します。python setup.py設定を使ってカスタムディレクトリにファイルをインストールする

/my/prefix/ 
    bin/ 
    script.sh 
    libexec/ 
    one.py 
    two.py 
    ... 
    lib/pythonX.Y/site-packages/ 
    package/... 

私の最初のプロジェクトは以下の通りです:

/ 
    script.sh 
    one.py 
    two.py 
    ... 
    setup.py 
    package/... 
    __init__.py 
    ... 

それを達成するための最良の方法だろう私は、私は次のような結果を取得したいと思い、特定の接頭辞を持っていますか?私のようなもので、後でそれをインストールできるようにしたいと思います:私は--prefix下のlib/pythonX.Y /サイト・パッケージとしてきちんと正しいディレクトリにインストール「パッケージ」を得ることができます

python setup.py install --prefix=/my/prefix 

デフォルトですロケーション。しかし、script.shを "bin"に、そして他のpythonファイルを "libexec"に入れるきれいな方法はありますか?これを達成するために私が見る唯一の方法は、setup.pyスクリプトでこれらのファイルを手動でコピーすることです。それを行うためのよりクリーンで標準的な方法があるかもしれませんか?

(編集)

ソリューション

私はそのようなsetup.pyになってしまった。もちろん

setup(name='mylib', 
    scripts=['script.sh'], 
    data_files=[('libexec', ['one.py', 'two.py'])] 
) 

、あなたはlibexecにのためのすべてのpythonファイルを反復処理できますが、I私はそこに必要な2-3のpythonファイルしか持っていません。

(EDIT2)

また、私は次のようにのsetup.cfgを持つことができます。

[install] 
prefix=/my/prefix 

、代わりのpython setup.py install --prefix=/my/prefix私は行うことができます。

python setup.py install 
+0

ここにいくつかの便利なドキュメントがあります:https://docs.python.org/2/install/index.html#alternate-installation-unix-the-prefix-schemeここではhttps://docs.pythonです。 org/3/distutils/introduction.html – Pierz

答えて

8

スクリプトが処理されますセットアップ機能へのscriptsパラメータの使用によってlibexecでは、それらをデータファイルとして扱い、データオプションを使用することができます。私はそれが--prefixオプションでどのように動作するかわからない

setup(... 
    scripts=glob("bin/*"), 
    data_files=[(os.path.join(sys.prefix, 'libexec', 'mypackage'), glob("libexec/*"))], 
    ... 
) 

は、私はそれを試したことがありません。

+0

ありがとう! data_filesは私のためにそれをしました。別の質問ですが、デフォルトの「接頭辞」を使用できますか?ユーザーが指定していない場合、私は自分自身(pythonのデフォルトではなく)を使いたいと思います。 – Ago

+1

setup.cfgファイルでオプションのデフォルトを作成できます。セクションと名前と値のペアを持つ.ini形式のオプションファイルです。コマンドラインオプションは直接そこにあるオプションに変換されます( '--'などを削除します)。 – Keith

+0

は、魅力のように動作します、ありがとう! – Ago

関連する問題