我是virtualenv的新手,但是我得到的錯誤對我沒有任何意義。VirtualEnv - Python 3.2 - 軟件包給出ImportError(但不在2.7)
當我在我的Python 2.7 virtualenv中做pip install MultiString
時,我可以使用包沒有問題。
如果我做同樣的在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)[email protected]:~$ 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
環境變量,以防萬一,但它沒有解決問題。
我正在嘗試使用tox來測試我的庫與Python 3的兼容性,並且我還沒有使用過Python 3,但是我感覺這更像是一個virtualenv問題。
有人猜測,這是舊的(2.x)相對導入的問題。 '__init __。py'可能具有'從MultiString import MultiString',而它應該有'from multistring.MultiString import MultiString',或(我認爲)'from .MultiString import MultiString'。這是我在3.x下安裝2.x軟件包時偶然發現的一個問題。 – Evert 2013-03-22 17:11:05