2

私は python27 モジュールを作成し、それを使用してインストールしpython setup.py installました。

そのモジュールの一部には、インストールする前にモジュール内の bin フォルダーに入れたスクリプトがあります。モジュールは適切にインストールされ、機能していると思います (サイトのパッケージとスクリプトに追加されています)。モジュールから関数とスクリプトを実行するだけの簡単なスクリプト「test.py」を作成しました。関数は正常に動作しますが (予想される出力がコンソールに出力されます)、スクリプトは動作しません。

from [module_name] import [script_name]うまくいかなかったtest.pyで試しました。

コマンドラインからモジュールのビン内でスクリプトを実行するにはどうすればよいですか?

4

2 に答える 2

1

またはを使用していますdistutilssetuptools

私は今テストしました.distutilsであれば、それで十分です

scripts=['bin/script_name']

あなたのsetup()電話で

代わりに setuptools を使用している場合は、 bin/ 内にスクリプトを完全に配置することを避け、追加してエントリポイントを定義できます

entry_points={'console_scripts': ['script_name = module_name:main']}

あなたのsetup()呼び出しの中に(あなたのmain中に関数があると仮定してmodule_name

bin/script_name が実行可能としてマークされていることは確かですか?

スクリプトを実行しようとしたときに発生する正確なエラーは何ですか? setup.py の内容は何ですか?

于 2013-04-23T15:47:59.627 に答える
0

条件を使用してグローバル変数の状態を確認するには、インストールされているモジュールを確認してください__name__。つまり:

if __name__ == "__main__":

グローバル変数__name__が " " 文字列に変更さ__main__れた場合は、コマンド ラインから手動でスクリプトを開始します (例: python sample.py)。この条件を使用し、すべてのコードをこの下に置くと、インストールされたモジュールを別のスクリプトからインポートしようとするときにうまくいきます。例(モジュールからのコードは、インポートすると実行されません):

testImport.py:

import sample
...another code here...

サンプル.py:

if __name__ == "__main__":
    print "You will never see this message, except of case, when you start this module manually from command line"
于 2013-04-24T09:42:02.507 に答える