Подтвердить что ты не робот

Возможные конфликтующие установки python

Я не уверен, что установка python по умолчанию является той, на которую я устанавливал модули, и если это может быть причиной ошибки совпадения размера байта Unicode. Короче говоря, я установил Numpy 1.7 с помощью Python 2.7.3, и когда я пытаюсь установить эту другую программу, которая использует 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

Поэтому я предполагаю, что у меня есть размер байт-бит в конфликте (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: Нет модуля с именем 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...
4b9b3361

Ответ 1

Проблема действительно представляется несоответствием настроек компиляции Python и Numpy.

/usr/local/bin, где установлен пользовательский Python, вы должны попытаться запустить с помощью /usr/bin/python.

Другое решение - использовать virtualenv. Попробуй это:

virtualenv myproject
cd myproject
source bin/activate
pip install numpy

В основном virtualenv настраивает другую установку Python со своими собственными пакетами в каталоге "myproject". Выполнение команды "активировать" указывает системе, что вы хотите использовать эту установку вместо системы по умолчанию. Это позволяет использовать разные среды Python для разных проектов. Используя virtualenv, каждый проект может иметь свои собственные версии пакетов Python, даже если они несовместимы с другими проектами или системными пакетами.

Обратите внимание, что вам придется повторять команду "source" каждый раз, когда вы открываете новую оболочку и хотите использовать эту виртуальную среду. Также вам может потребоваться установить команду 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.

Ответ 2

На какой ОС вы работаете? Это больше вопрос для суперпользователя, но попробуйте что-то подобное. Ditch easy_install и используйте pip если вы еще этого не сделали.

На Ubuntu:

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