1

私はvirtualenvは初めてですが、私が得ているエラーは私には意味がありません.

pip install MultiStringPython 2.7 virtualenv で行うと、問題なくパッケージを使用できます。

Python 3.2 で同じことを行うと、インストールは期待どおりに実行されますが、インポートしようとすると、次のようになります。

  File "<stdin>", line 1, in <module>
  File "/home/tom/p3/lib/python3.2/site-packages/multistring/__init__.py", line 1, in <module>
    from MultiString import MultiString
ImportError: No module named MultiString

それでも:

(p3)tom@K9:~$ ls -alh /home/tom/p3/lib/python3.2/site-packages/multistring/
total 28K
drwxrwxr-x 3 tom tom 4.0K Mar 22 11:44 .
drwxrwxr-x 7 tom tom 4.0K Mar 22 11:43 ..
-rw-rw-r-- 1 tom tom   36 Mar 22 11:43 __init__.py
-rw-rw-r-- 1 tom tom  12K Mar 22 11:43 MultiString.py
drwxrwxr-x 2 tom tom 4.0K Mar 22 11:43 __pycache__

cdそのディレクトリに移動して p3 virtualenv 内から行う場合python __init__.py、問題はありません。同様に、cdそのディレクトリに移動してインタラクティブ セッションを開くと、通常どおりライブラリをインポートして使用できます。

表示されたエラー メッセージは、適切なパッケージを見つけていることを示していますが、インポートできない理由がわかりません。

/home/tom/p3/lib/python3.2/site-packages念のため、環境変数に追加してみましPATHたが、問題は解決しませんでした。

ライブラリの Python 3 との互換性をテストするために tox を使用しようとしていますが、Python 3 はあまり使用していませんが、これは virtualenv の問題であると感じています。

4

1 に答える 1

2

推測では、これは古い (2.x) 相対インポートの問題です。__init__.pyおそらく持っている

from MultiString import MultiString

あるべきなのに

from multistring.MultiString import MultiString

または(私は思う)

from .MultiString import MultiString

しかし、絶対的なインポートが優先されると思います。

これは、2.x パッケージを 3.x の下にインストールするときに何度か遭遇した問題です。2to3 ツールがこれを修正するかどうかはわかりません (ソース コードを手動でハッキングしました)。

于 2013-03-23T12:33:52.093 に答える