0

スクリプト ファイルと ipython コンソールの両方で、数学モデリング パッケージ を正常に使用しています。ただし、によって開始された IPython ノートブックでcoopr.pyomoシンプルにしようとすると、次のエラー メッセージが表示されます。import coopr.pyomoipython notebook

ImportError                               Traceback (most recent call last)
<ipython-input-1-ff8219fceacd> in <module>()
----> 1 import coopr.pyomo

ImportError: No module named pyomo

その他のインポート (buitlin とカスタム パッケージの両方) は問題なく動作します。原因を探すためのアイデアはありますか?

環境: Windows 7 上の Python 2.7 (32 ビット)、IPython 0.13.2、Coopr リリース 3.2.6148。

編集:より多くの診断

確かに、coopr はインポートできますが、__file__属性はありません。を表示する__dict__と、正しいパスが得られます。

{'__name__': 'coopr', 
 'data': <module 'coopr.data' (built-in)>, 
 '__doc__': None, 
 '__path__': ['C:\\Python27\\lib\\site-packages\\coopr']}

そのディレクトリを参照すると、すべてのサブモジュール (coopr.pyomo など) がsrcサブディレクトリにあることがわかります。dataいくつかのテスト (test_baselines.py、test_perf.py) およびサンプル (diet1.py) ファイルを含む偽のディレクトリのようです。

編集#2:近づいている(と思う)

この問題は、Coopr の Windows インストーラーがどのように動作するかという独特の方法によって引き起こされているようです。Installation Notesによると、Coopr は独自の仮想サンドボックスにカプセル化されています。これは、デフォルトのインストール ディレクトリの提案CH :=によって下線が引かれていますC:/Packages/Coopr。前回は、このサインを無視して、単純に Python のsite-packagesフォルダーにインストールしました。ここで、テストのために、Coopr をこの外部ディレクトリに再インストールしました。Coopr/Pyomoは、 CHsys.pathディレクトリのすべてのサブディレクトリによって拡張されるため、(I)Python セッション内から正常にインポートできます。/src/

ただし、これらのサブディレクトリは、私が慣れ親しんでいる他のパッケージとは異なって見えます。たとえば、src/coopr.pyomo には setup.py しか含まれていませんが、CH__init__.pyに置かれています。IPython はパッケージを見つけることができるように見えますが、IPython ノートブックは (検索パスは同じですが) パッケージの編成方法に混乱しているようです。/src/coopr.pyomo/coopr/pyomo

4

2 に答える 2

1

推測する必要がありますが、次のとおりです。

ノートブックで次のようなことを試してください。

import coopr
print coopr.__file__

cooprインストールされているモジュールとは異なるモジュールを選択しているようです。__file__属性は、使用しているモジュールを示しているはずです。というスクリプトがあるかもしれませんcoopr。そのようなスクリプトにはサブモジュールが含まれませんpyomo

これが IPython ノートブックでのみ発生し、IPython コンソールでは発生しないのはなぜですか? 私の推測では、実際に別のcooprモジュールが存在する場合、それはホーム ディレクトリか、IPython ノートブックが「ベース」として使用するシステム上の別の場所に存在します。IPython コンソールのベース ディレクトリは開始した場所ですが、IPython ノートブックはおそらく分離されており、デフォルトのベース ディレクトリがあります。ノートブックが Windows でどのように実行されるかはわかりません。そのため、そのデフォルトが何であるか、どこを参照すればよいかはわかりませんが、上記のコードはそれを非常によく示しています。

于 2013-07-15T14:03:37.743 に答える
0

正しい方向に向けてくれた@Evertに感謝します。この問題は、Coopr をsite-packagesPython インストールのディレクトリに (不注意に) インストールしたことが原因でした。自分へのメモ:そうしないでください。IPython 自体はパッケージを見つけることができましたが、IPython のノートブックの検索パスが混乱し、cooprディレクトリが他のパッケージ フォルダーと同じように扱われました。

Coopr をPython インストール ディレクトリ以外の推奨される場所に再インストールし、coopr ディレクトリを から削除してからsite-packages再起動すると、すべて正常に動作します。

于 2013-07-16T13:30:26.407 に答える