2

いくつかのコンソール スクリプトが付属する Python パッケージに取り組んでいます。パッケージのレイアウト方法 (以下の例を参照) のため、コンソール スクリプトは、インポートしようとしているパッケージを認識しません。

レイアウトの例を次に示します。

- my_package
    bin/some_script.py
    my_package/
      __init__.py
      a_module.py

Python パッケージの内容を操作しながら「bin」内のコンソール スクリプトをテストできるようにするには、パッケージをどのように構成すればよいですか?

4

3 に答える 3

1

ここにちょっとしたトリックがあります。

python < bin/some_script.py

bin/some_script.pyimports fromはmy_package開発ディレクトリからインポートします。

<これは、入力リダイレクトとして機能するある種の bash のようなシェルを使用していることを前提としています。

于 2012-09-23T21:45:37.537 に答える
0
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'bin'))

だから、中__init__.py

import os
import sys

sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'bin'))

import some_script

some_script.some_function()
于 2012-09-23T21:54:08.860 に答える
0

私は同じ問題を抱えていましたが、最終的にスクリプトの最初でこれを行うことになりました:

try:
    # this works after package has been installed using distutils for example
    import my_package
except ImportError:
    # this should work during dev time with the directory layout you describe
    rootpath = os.path.dirname(os.path.realpath(os.path.join(__file__, "../")))
    sys.path.insert(0, rootpath)
    try:
        import my_package
    except ImportError:
        print("*** my_package is not installed properly. Exiting.")
        sys.exit()

これで、プロジェクト ルートからコンソール スクリプトを実行できるようになりました。

bin/some_script.py --help

お役に立てれば!

于 2013-02-26T13:01:34.633 に答える