我不确定默认的python安装是否是我一直在安装模块的安装,如果这可能是导致Unicode字节大小兼容性错误的原因.简而言之,我使用Python 2.7.3安装了Numpy 1.7,当我尝试安装使用Python和Numpy作为依赖项的其他程序时,我收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
所以我猜我有一个冲突的unicode字节大小(2字节对4字节).我去检查一下,看看我是否有相互矛盾的Python版本可能搞砸了.
python --version
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)
但这似乎与此不符
which python
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
当我去/usr/local/bin找到这些文件(与python相关)时:
python
python2
python2.7
python-config
python2-config
python2.7-config
Run Code Online (Sandbox Code Playgroud)
现在我已经将numpy安装到dist-packages目录中,/usr/lib/python2.7/dist-packages该目录对应于我所获得的目录python --version.但事实上,当我尝试which python获取一个目录python而不python2.7关心我,当我尝试安装使用python和numpy作为依赖项的程序时,这可能会有冲突.
所以我想澄清我的问题:这些普通文件是为python安装找到的还是我以某种方式安装了三个不同的版本?他们会用无法识别的符号导致我的错误吗?如果它们确实是无关的版本,有没有办法卸载?
感谢您的任何帮助,您可以提供!
哦,这里是我之前的一个问题的链接,在那里我编辑了PYTHONPATH同时尝试修复我得到的ImportError,如果这可能会影响事情.... ImportError:没有名为numpy的模块
以下是尝试virtualenv的结果:
chris@ubuntu:~/Documents/IS/Bioinformatics-Software$ virtualenv weblogo-3.3
New python executable in weblogo-3.3/bin/python
Installing setuptools.............done.
Installing pip...............done.
chris@ubuntu:~/Documents/IS/Bioinformatics-Software$ cd weblogo-3.3
chris@ubuntu:~/Documents/IS/Bioinformatics-Software/weblogo-3.3$ source bin/activate
(weblogo-3.3)chris@ubuntu:~/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...
Run Code Online (Sandbox Code Playgroud)
pic*_*cer 12
问题确实似乎是Python和Numpy编译设置的不匹配.
/ usr/local/bin是安装自定义Python的地方,你应该尝试使用/ usr/bin/python运行.
另一个解决方案是使用virtualenv.试试这个:
virtualenv myproject
cd myproject
source bin/activate
pip install numpy
Run Code Online (Sandbox Code Playgroud)
基本上,virtualenv在"myproject"目录中使用自己的包设置不同的Python安装.运行"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的符号链接.
| 归档时间: |
|
| 查看次数: |
16439 次 |
| 最近记录: |