我是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