2013-03-14 12 views
12

Nie jestem pewien, czy domyślna instalacja pythona jest tą, do której instalowałem moduły i czy może to być przyczyną konfliktu błędu kompatybilności rozmiaru bajtowego Unicode. Krótko mówiąc, mam zainstalowane Numpy 1,7 przy użyciu Python 2.7.3 i gdy próbuję zainstalować ten inny program, który używa Python i Numpy jako zależności, otrzymuję ten błąd:Możliwe kolidujące instalacje 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 

więc myślę, że mam konflikt rozmiar bajtów unicode (2-bajtowy w porównaniu z 4-bajtowym). Poszedłem sprawdzić, czy mam sprzeczne wersje Pythona, które mogą to zepsuć.

python --version 
Python 2.7.3 

Ale to wydaje się sprzeczne z

which python 
/usr/local/bin/python 

Kiedy idę do /usr/local/bin znajdę tych plików (odpowiednich do pytona)

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

Teraz mam zainstalowane NumPy Into the katalog dist-paczek o numerze /usr/lib/python2.7/dist-packages, który odpowiada temu, co otrzymam za python --version. Ale fakt, że próbuję which python i uzyskać katalog dla python, a nie python2.7 dotyczy mnie, że może to być sprzeczne, gdy próbuję zainstalować program, który używa Pythona i numpy jako zależności.

Więc domyślam się, że moje pytanie (pytania): Czy te zwykłe pliki można znaleźć w instalacji Pythona, czy też w jakiś sposób zainstalowałem trzy różne wersje? Czy mogą powodować mój błąd z nierozpoznanym symbolem? Czy istnieje sposób na odinstalowanie, jeśli rzeczywiście są to wersje obce?

Dzięki za pomoc, jaką możesz zapewnić!

No i tu jest link do poprzedniego pytania miałem, gdzie redagował PYTHONPATH starając się naprawić ImportError ja trafiałem, czy to może mieć wpływ na rzeczy .... ImportError: No module named numpy

Oto wyniki próbowania 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' jest prawdopodobnie tylko dowiązaniem symbolicznym. użyj 'ls -l/usr/local/bin/python', aby zobaczyć gdzie – wim

Odpowiedz

11

Problem rzeczywiście wydaje się być niedopasowanie kompilacji ustawień Python i Numpy.

/usr/local/bin jest tam, gdzie zainstalowany jest niestandardowy Python, należy spróbować uruchomić za pomocą/usr/bin/python.

Innym rozwiązaniem jest użycie virtualenv. Spróbuj tego:

virtualenv myproject 
cd myproject 
source bin/activate 
pip install numpy 

Zasadniczo virtualenv ustawia inną instalację Pythona z własnych pakietów w katalogu „myproject”. Uruchomienie polecenia "aktywuj" mówi systemowi, że chcesz użyć tej instalacji zamiast domyślnego systemu. Dzięki temu możesz mieć różne środowisko Python dla różnych projektów. Używając virtualenv, każdy projekt może mieć własne wersje pakietów Pythona, nawet jeśli są one niezgodne z innymi projektami lub pakietami systemowymi.

Uwaga: za każdym razem, gdy otwierasz nową powłokę i chcesz korzystać z tego środowiska wirtualnego, będziesz musiał powtarzać polecenie "source". Ponadto może być konieczne zainstalowanie polecenia virtualenv przy użyciu menedżera pakietów systemu operacyjnego. Jeśli nie jest to możliwe (np. Nie masz dostępu do roota) lub twoja wersja systemu operacyjnego jest zbyt stara z jakiegoś powodu, możesz również pobrać ją ręcznie z https://pypi.python.org/packages/source/v/virtualenv/

Jeśli robisz ls -l/usr/local/bin/python * powinieneś zobaczyć, że python i python2 są w rzeczywistości dowiązaniami symbolicznymi do python2.7, a także python-config i python2-config są dowiązaniami symbolicznymi do python2.7-config.

+0

Hej, dzięki za wyjaśnienie - próbowałem używać virtualenv, gdy zdałem sobie z tego sprawę, ale nie mogłem wymyślić, jak to działa. Próbowałem 'pip install numpy' i edytowałem mój oryginalny post z wynikami. Zasadniczo wciąż używa poprzednio zainstalowanej wersji numpy. – user1784467

+0

Okay, właśnie wypróbowałem 'python setup.py install' i uruchomił ten plik bez widocznych błędów, pomimo użycia tej samej instalacji Numpy jako poza środowiskiem wirtualnym. Wydaje mi się, że to działa na razie, chociaż ostatecznie chciałbym rozwiązać konflikty, jeśli są obecne ... ale w każdym razie dzięki za pomoc – user1784467

+3

Jeśli virtualenv znajduje twój systemowy numpy, robi "virtualenv --no- site-packages myproject "może pomóc. Dla mnie "man virtualenv" mówi, że ta opcja jest domyślna, ale może nie być tak, jeśli używasz starszej wersji. – picomancer

1

W jakim systemie operacyjnym jesteś? To jest bardziej pytanie dla administratora, ale spróbuj czegoś takiego. Ditch easy_install i użyj pip, jeśli jeszcze tego nie zrobiłeś.

Na Ubuntu:

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

Tak, próbowałem użyć' pip' zamiast 'easy_install', ale wciąż mam ten sam problem. – user1784467

Powiązane problemy