2013-03-14 100 views
12

我不确定默认的python安装是否是我一直在安装模块的安装,并且这可能是导致Unicode字节大小兼容性错误的原因。总之,我使用Python 2.7.3安装numpy的1.7,当我尝试安装使用Python和NumPy的作为依赖这个其他程序,我得到这个错误:python安装可能存在冲突

Traceback (most recent call last): 
    File "setup.py", line 20, in <module> 
    from weblogolib import __version__ 
    File "/home/chris/Documents/IS/Bioinformatics-Software/weblogo-3.3/weblogolib/__init__.py", line 108, in <module> 
    from numpy import array, asarray, float64, ones, zeros, int32,all,any, shape 
    File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module> 
import add_newdocs 
    File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module> 
from numpy.lib import add_newdoc 
    File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module> 
from type_check import * 
    File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module> 
import numpy.core.numeric as _nx 
    File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module> 
import multiarray 
ImportError: /usr/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS4_AsUnicodeEscapeString 

所以我想我有相冲突unicode字节大小(2字节与4字节)。我去检查一下,看看我是否有可能会搞砸了Python的冲突版本。

python --version 
Python 2.7.3 

但这似乎不是很吻合

which python 
/usr/local/bin/python 

当我去/usr/local/bin我觉得(与Python)的这些文件:

python 
python2 
python2.7 
python-config 
python2-config 
python2.7-config 

现在我已经安装numpy的进dist-packages目录/usr/lib/python2.7/dist-packages这对应于我得到的python --version。但是,当我尝试which python并获取python而不是python2.7的目录时,我担心这会在我尝试安装使用python和numpy作为依赖关系的程序时发生冲突。

所以我想澄清我的问题:这些正常的文件是为python安装找到还是我以某种方式安装了三个不同的版本?他们是否会导致我的错误与无法识别的符号?有没有办法卸载,如果他们确实是无关的版本?

感谢您提供任何帮助!

哦,这里是上一个问题我有,我在那里编辑的PYTHONPATH,同时试图修复一个ImportError我得到的,如果这可能是影响事物的链接.... ImportError: No module named numpy

这里有尝试virtualenv的结果:

[email protected]:~/Documents/IS/Bioinformatics-Software$ virtualenv weblogo-3.3 
New python executable in weblogo-3.3/bin/python 
Installing setuptools.............done. 
Installing pip...............done. 
[email protected]:~/Documents/IS/Bioinformatics-Software$ cd weblogo-3.3 
[email protected]:~/Documents/IS/Bioinformatics-Software/weblogo-3.3$ source bin/activate 
(weblogo-3.3)[email protected]:~/Documents/IS/Bioinformatics-Software/weblogo-3.3$ pip install numpy 
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/lib/python2.7/dist-packages 
Cleaning up... 
+1

'/ usr/local/bin/python'可能只是一个符号链接。使用'ls -l/usr/local/bin/python'来查看 – wim 2013-03-14 07:22:37

回答

11

问题确实似乎是Python和NumPy的编译设置不匹配。

/usr/local/bin是自定义Python的安装位置,您应该尝试使用/ usr/bin/python来运行。

另一种解决方案是使用virtualenv。试试这个:

virtualenv myproject 
cd myproject 
source bin/activate 
pip install numpy 

基本上virtualenv中不同的Python安装与它自己的包中的“MyProject的”目录设置。运行“activate”命令会告诉系统您要使用此安装而不是默认系统。这使您可以为不同的项目创建不同的Python环境。使用virtualenv,即使每个项目与其他项目或系统软件包不兼容,每个项目都可以拥有自己的Python软件包版本。

请注意,每次打开新shell并希望使用该虚拟环境时,必须重复“source”命令。另外,您可能需要使用OS软件包管理器来安装virtualenv命令。如果这是不可能的(例如,你没有root访问权限)或者你的操作系统版本由于某种原因太老,你也可以从https://pypi.python.org/packages/source/v/virtualenv/

手动下载它如果你做ls -l/usr/local/bin/python *你应该看到python和python2实际上是对python2.7的符号链接,同样python-config和python2-config也是对python2.7-config的符号链接。

+0

嘿,谢谢你的解释 - 当我意识到时,我实际上试图使用virtualenv,但无法弄清楚如何让它工作。我尝试了'pip安装numpy'并编辑了我的原始文章和结果。基本上它仍然使用以前安装的numpy版本。 – user1784467 2013-03-14 14:30:41

+0

好吧,我只是尝试了'python setup.py install',它运行这次没有明显的错误,尽管使用了与virtualenvironment相同的Numpy安装。我猜这现在可行,尽管如果它们存在,我想最终解决冲突的安装....但无论如何感谢您的帮助 – user1784467 2013-03-14 14:53:16

+3

如果virtualenv正在查找您的系统范围的numpy,请执行“virtualenv --no-网站包myproject“可能会有所帮助。对我而言,“man virtualenv”表示这个选项是默认选项,但如果您使用的是旧版本,这可能不适用于您。 – picomancer 2013-03-14 19:23:56

1

你在什么操作系统上?这对于超级用户来说更是一个问题,但请尝试这样的事情。沟渠easy_install和使用pip如果你还没有。

在Ubuntu:

sudo apt-get install python-setuptools 
sudo easy_install pip 
pip install --user numpy 
+0

是的,我尝试使用'pip'而不是'easy_install',但仍然遇到同样的问题。 – user1784467 2013-03-14 14:48:38