web-dev-qa-db-ja.com

virtualenvをアクティブ化する必要があるスクリプトの共有

共有Linuxサーバーにデフォルト設定でvirtualenvとvirtualenvwrapperをインストールしています(virtualenvsは〜/ .virtualenvsにあります)。正しいvirtualenvがアクティブ化されている場合にのみ実行できるPythonスクリプトがいくつかあります。

今、私はshareサーバー上の他のユーザーとそれらのスクリプトを実行したいのですが、virtualenvについて何も知らなくても...実行できるようにpython scriptnameまたは./scriptnameそしてスクリプトは私のvirtualenvで利用可能なライブラリで実行されます。

これを行う最もクリーンな方法は何ですか?私はいくつかのオプション(virtualenvが提供するインタープリターを指すようにShebangラインを変更するなど)をいじりましたが、それらは非常に柔軟性がないようです。助言がありますか?


編集:これは他の何人かの人がアカウントを持っている開発サーバーです。ただし、それらはいずれもPythonプログラマーではありません(私は現在それらを変換しようとしています)。これらのスクリプトを簡単に実行し、場合によってはロジックを検査できるようにしたいだけです。 -Pythonistasから環境の詳細へ。ありがとう。

39
Mzzzzzz

1台のサーバーのみにある場合、柔軟性は関係ありません。 Shebangを変更します。それが心配な場合は、virtualenvを使用しない開発サーバーにパッケージ化されてインストールされたコピーを作成してください。ローカルユーザーであろうとグアテマラのユーザーであろうと、開発が終了すると、virtualenvはもはや適切なツールではなくなります。

0
jcdyer

スクリプトの開始時に次のmagic(5)を使用します。

#!/usr/bin/env python

アクティブなvirtualenvを変更すると、そのvirtualenvのpythonが使用されます。virtualenvを非アクティブ化しても、引き続き実行されます。

104
Chris Dukes

scriptnameに正しいvirtualenvpythonを指すShebang行を追加することに投票します。ユーザーにscriptnameへのフルパスを伝える(またはPATHに入れる)だけで、ユーザーはそれがPythonスクリプトであることを知る必要さえありません。

ユーザーがプログラマーの場合、virtualenvについてユーザーに知られたくない/学ばせたくない理由がわかりません。

6
Heikki Toivonen