2017-06-22 6 views
-1

niceモジュールmultiscorerをフォークし、別の環境でインストールできるパッケージにしようとしています。最小限のモジュールのための壊れたsetup.pyの実装

私のフォークはhereです。私が撮ったの手順は、(condaを使用して)新しい環境を作成し、新しいターミナルでフォーク

  • のルートディレクトリから、それを
  • python setup.py installをアクティブに、環境をアクティブにし、いくつかの任意の場所に移動

    • です。 ipythonを起動し、from multiscorer import MultiScorer

    私は次のようなエラーImportError: cannot import name 'MultiScorer'を取得してみてください。ただし、import multiscorerはうまく動作します。 python setup.py installを使用してインストールを有効にするには、コードで何を変更する必要がありますか?

    もう1つの試み:packages=['multiscorer']py_modules=['multiscorer.multiscorer']に置き換えようとしました。助けてくれなかった...

  • +0

    あなたはスペルの問題がないのですか? 'from multiscorer import MultiScorer' - >' ImportError:名前 'Multiscorer'をインポートできません。 – am2

    +0

    @ am2それは誤字です。問題はまだあります。 – Dror

    答えて

    0

    間違ったものをインポートしようとしました。以下はfrom multiscorer.multiscorer import MultiScorerです。

    私は今これがのpythonicの方法であると思っています。

    +0

    それは_pythonic_、imhoであるにはあまりにも冗長すぎるようです。あなたが2番目の 'multiscorer'(私の答えを見てください)を避けることができるのでもっとそうです:) –

    2

    setup.pyは問題ありません。問題はパッケージの構造です。今すぐMultiscorerクラスをインポートする正しい方法はfrom multiscorer.multiscorer import Multiscorerです。最初のmultiscorerは同じ名前のフォルダ(パッケージ)用で、2番目のmultiscorerはパッケージ内のmultiscorer.pyモジュール用です。

    The docsこのような小さなパッケージの場合は、すべてのコードを__init__.pyに入れることをおすすめします。 コードベースが後で1つのファイルに対して大きくなりすぎる場合は、パッケージレベルでクラス/機能を公開するために他のモジュールの導入を開始し、__init__.pyを使用することができます。

    これが役に立ちます。

    関連する問題