我刚刚开发了一个Python项目,它是用测试驱动开发构建的。我当然看到了它的价值,我期待着进一步利用它。在
我已经使用pyenv
安装了所有必需的Python解释器(请参见^{tox -r
,我在2.6中遇到了以下问题(我还有其他问题,但我可以解决这些问题):
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 20, in <module>
import distutils.sysconfig
ImportError: No module named distutils.sysconfig
ERROR: InvocationError: /home/wxl/.pyenv/shims/python2.6 /usr/lib/python2.7/dist-packages/virtualenv.py --setuptools --python /home/wxl/.pyenv/shims/python2.6 py26 (see /home/wxl/dev/git/blogofobe/.tox/py26/log/py26-0.log)
显然这不是代码的问题,而是试图调用virtualenv
。回溯似乎表明它与丢失的模块有关,但那些模块应该在标准库中,即使在2.6中也是如此。在
有趣的是,如果我运行python2.6
并尝试import distutils.sysconfig
,它将失败。另一方面,如果我使用pyenv shell 2.6.9
切换到该版本并尝试相同的操作,则效果良好。在
我错过了什么?在
FWIW,我在Ubuntu 14.04上,并且:
^{pr2}$
您似乎在使用Debian提供的virtualenv和pyenv中的python。这无法正常工作,因为Debian已经修补了站点.py,distutils,sysconfig,可能还有您试图用来对已安装的python的文件布局做出某些假设的virtualenv。dist包是特定于Debian的python补丁的一个明确指示。在
这些假设违背了pyenv安装的标准python。解决方案是在pyenv python中安装virtualenv,例如:
如果没有pip垫片,请使用以下方法:
^{pr2}$别忘了通过运行
pyenv rehash
来重新生成垫片相关问题 更多 >
编程相关推荐