Domyślny python dla Ubuntu i katalog pythona

0

Cześć
Jestem dość świeżym użytkownikiem ubuntu 14 i mam pare pytań, otóż:

  1. Jak sprawdzić gdzie jest zainstalowany python? W windowsie miałem np. C:/python33 i było jasne, tutaj mam coś w /opt, coś w /usr/lib, coś w /usr/local/lib coś tu coś tam i w końcu już nie wiem gdzie jest domyślnie zainstalowany :D

2.Ważne pytanie - otóż domyslny python dla ubuntu to 2.7.6. Chce go zmienić na 3.3.5 - i pojawia sie mały problem. W internetach przeczytałem, żeby zrobić cos takiego:
sudo ln -s /usr/bin/python3.3 /usr/local/bin/python
Owszem, zrobiło sie, jak wpisze w terminal "python" pokazuje wersje 3.3.5, z tym że jest haczyk. Jak np dla Django potrzebuje zainstalowac setuptools i wywołuje:
sudo apt-get install python-setuptools
To instaluje się to pod: /usr/lib/python2.7/dist-packages Tak więc wciąż domyślnym pythonem, wokół którego wszystko się "kręci" nie jest 3.3.5 a 2.7.6

Jak to poustawiać? Może to być proste pytanie ale na prawde nie moge tego znalezc nigdzie :P

pozdrawiam

0
azalut napisał(a):
  1. Jak sprawdzić gdzie jest zainstalowany python? W windowsie miałem np. C:/python33 i było jasne, tutaj mam coś w /opt, coś w /usr/lib, coś w /usr/local/lib coś tu coś tam i w końcu już nie wiem gdzie jest domyślnie zainstalowany :D

Polecenie:
whereis python
W menadżerze pakietów możesz sprawdzić gdzie poszczególne pakiety (począwszy od Pythona poprzez jego zależności) instalują pliki. Pod Ubuntu oficjalne pakiety muszą umieszczać poszczególne pliki w odpowiednich miejscach (np. nie mogą walnąć wszystkiego do /opt), bo inaczej nie zostaną przyjęte.

azalut napisał(a):

2.Ważne pytanie - otóż domyslny python dla ubuntu to 2.7.6. Chce go zmienić na 3.3.5 - i pojawia sie mały problem. W internetach przeczytałem, żeby zrobić cos takiego:
sudo ln -s /usr/bin/python3.3 /usr/local/bin/python
Owszem, zrobiło sie, jak wpisze w terminal "python" pokazuje wersje 3.3.5, z tym że jest haczyk. Jak np dla Django potrzebuje zainstalowac setuptools i wywołuje:
sudo apt-get install python-setuptools
To instaluje się to pod: /usr/lib/python2.7/dist-packages</code> Tak więc wciąż domyślnym pythonem, wokół którego wszystko się "kręci" nie jest 3.3.5 a 2.7.6

Polecenie, na które się powołujesz zmienia domyślną wersję Pythona, pod którą uruchamiane są Twoje skrypty. Jednak nigdzie nie jest powiedziane, że dodatkowe moduły nagle będą napisane dla tej wersji. Ręczne obejście, które zrobiłeś może Ci coś namieszać w systemie, bo pakiety napisane w Pythonie 2.x.x mogą nie pójść pod Pythonem 3.x.x. Wszystko zależy jak te aplikacje są uruchamiane (jakie mają aktywatory). Pakiet setuptools, którego używasz wspiera akurat Pythona 2, to normalne. Dla Pythona 3 musisz zainstalować pakiet python3-setuptools.

zrzut_ekranu-Menedżer Pakietów Synaptic .png

Także, "you're doing it wrong", zejdź z tej ścieżki :)

Wersję Pythona zmień sobie w środowisku programistycznym, a nie w systemie operacyjnym.

0

@Spine z tym, ze whereis python wskazuje mi wszystkie katalogj gdzie sa pliki pythona, a gdzie jest ten "głowny" katalog jak C:/Python33? :)
Jak teraz odkrecic wiazanie sudo ln itd.? raczej problemu z systemem chce uniknac :D
Instalacja python3-setuptools tez nie pomaga, bo instaluje sie to bodajze w /usr/lib/python3, z tym, ze tam jest tez obok katalog python3.3 o ktory mi chodzi.
I z tego co zauwazylem to tak:
/usr/bin/python3.3 - zawiera jakis plik wykonywalny pythona
/usr/lib/python3.3 - katalog pythona 3.3 BEZ site-packages i dist-packages
/usr/local/bin - plik python z tego powiazania
/usr/local/lib tutaj sa katalogi tj. python3.3 czy python27 albo python3.4 i tutaj w folderze pytho 3.3 mam wlasnie 2 katalogi: site-packages i dist-packages
/opt/python3.3.5 - to sie chyba zainstalowalo jak instalowalem pythona 3.3.5

Zainstalowalem jakos bezposrednio do tego katalogu /usr/local/lib/python3.3/dist-packages poleceniem:
"sudo apt-get download python3-setuptools"
i zadzialalo, potem django tez jakos bezposrednio, nawet nie pamietam jak :D

Mimo wszystko troche mnie niepokoi ta niezgodnosc pythonow i ta skomplikowanosc jak na linuxa. Z linii komend chcialem miec domyslnego 3.3.5 bo w django czesto sie uruchamia cos, albo instaluje komenda pythona i chcialem uzywac 'python' zamiast 'python3.3' zeby uniknac jakichs niezgodnosci
A najbardziej chcialbym pobierac pakiety w odpowiednie miejsce za pomoca manadzera pakietow albo apt-get`em, bez zbednych komplikacji jak na linuxa przystalo :P

0

Zamiast kombinować z ustawieniami systemu, ustawiaj atrybut executable na pliku z kodem i w pierwszej linii wpisuj:

#!/usr/bin/python3.3

# twoj kod

To powinno załatwić sprawę z koegzystencją obu wersji pythona.

0
azalut napisał(a):

Jak teraz odkrecic wiazanie sudo ln itd.? raczej problemu z systemem chce uniknac :D

Najprościej - przeinstalować pakiety z interpreterem Pythona ;)

azalut napisał(a):

@Spine z tym, ze whereis python wskazuje mi wszystkie katalogj gdzie sa pliki pythona, a gdzie jest ten "głowny" katalog jak C:/Python33? :)

Pod Linuksem nie ma takiego "głównego" katalogu. Wszystkie podfoldery są rozproszone w odpowiednich miejscach.

azalut napisał(a):

Instalacja python3-setuptools tez nie pomaga, bo instaluje sie to bodajze w /usr/lib/python3, z tym, ze tam jest tez obok katalog python3.3 o ktory mi chodzi.
I z tego co zauwazylem to tak:
/usr/bin/python3.3 - zawiera jakis plik wykonywalny pythona
/usr/lib/python3.3 - katalog pythona 3.3 BEZ site-packages i dist-packages
/usr/local/bin - plik python z tego powiazania
/usr/local/lib tutaj sa katalogi tj. python3.3 czy python27 albo python3.4 i tutaj w folderze pytho 3.3 mam wlasnie 2 katalogi: site-packages i dist-packages
/opt/python3.3.5 - to sie chyba zainstalowalo jak instalowalem pythona 3.3.5

Jeśli koniecznie chcesz wymusić, żeby twój skrypt pod Pythonem 3.3.5 (który Ci się zainstalował do opt, bo nie pochodzi z oficjalnego repo) widział pakiety z folderu /usr/lib/python3, musisz w swoim skrypcie wydać komendę (najlepiej na początku, przed wszystkim innym)

import sys
sys.path.append('/usr/lib/python3')

I już możesz importować pożądane pakiety z tego katalogu.

<quote="1035025">Zainstalowalem jakos bezposrednio do tego katalogu /usr/local/lib/python3.3/dist-packages poleceniem:
"sudo apt-get download python3-setuptools"
i zadzialalo, potem django tez jakos bezposrednio, nawet nie pamietam jak :D

Lepiej taki nie mieszać w systemie pakietów. Ale w sumie... tylko sobie robisz bałagan i pewnie w najbliższej przyszłości nie będziesz aktualizował, czy odinstalowywał tego pakietu ;)


 > ##### [azalut napisał(a)](http://4programmers.net/Forum/1035025):
> Mimo wszystko troche mnie niepokoi ta niezgodnosc pythonow i ta skomplikowanosc jak na linuxa. Z linii komend chcialem miec domyslnego 3.3.5 bo w django czesto sie uruchamia cos, albo instaluje komenda pythona i chcialem uzywac 'python' zamiast 'python3.3' zeby uniknac jakichs niezgodnosci
> A najbardziej chcialbym pobierac pakiety w odpowiednie miejsce za pomoca manadzera pakietow albo apt-get`em, bez zbednych komplikacji jak na linuxa przystalo :P

Jeśli chcesz mieć Linuksa gnającego do przodu z pakietami, to Ubuntu nie jest najlepszym wyborem. Nie zdziwiłbym się jakby np. Pythona 3.4.1 wsadzili dopiero w następnej wersji. Jak chcesz distro, które się częściej aktualizuje, weź Arch Linux. Tam pakiet z Pythonem 2 jest nazwany python2, a pakiet z Pythonem 3 jest nazwany python ;) - https://www.archlinux.org/packages/?sort=&repo=Extra&q=python&maintainer=&flagged=
No i setuptools zainstaluje Ci się dla Pythona 3.4 - https://www.archlinux.org/packages/extra/any/python-setuptools/
0

@Spine nie chodzi tyle o gnanie do przodu z pakietami, co po prostu dość łatwą obsługe linuxa :) żeby przejście z windowsa, którego używałem od dziecka było mało bolesne, ale zebym tez cos zakumał z linuxów ;)
A nie da rady jakos przestawić, żeby pakiety instalowały się gdzieś indziej? bo z tego co widze to mimo, że używam w PyCharmie IDE 3.3.5 to nie używam tego z pod /opt/python3.3.5 tylko tego z /usr/lib/python3.3
A mówi się, że python(i ruby tez) lepiej używa sie na linuxie, mi było osobiście prościej na windowsie7 :D

Najprościej - przeinstalować pakiety z interpreterem Pythona ;)

A jak to zrobić? próbowałem w synaptic menedżeże, ale coś mi nie poszło :P Wyrzuciłem plik "python" z /usr/local/bin ale dalej po wpisaniu w konsole "python" pojawia sie 3.3.5

@MarekR22
Czyli ten nagłówek wymusza używanie interpretera z podanej ścieżki ?

0
azalut napisał(a):

@Spine nie chodzi tyle o gnanie do przodu z pakietami, co po prostu dość łatwą obsługe linuxa :) żeby przejście z windowsa, którego używałem od dziecka było mało bolesne, ale zebym tez cos zakumał z linuxów ;)

Użytkownik Linuksa, który nie miał styczności z Windowsem, odczuwa podobny ból. Wierz mi.

azalut napisał(a):

A nie da rady jakos przestawić, żeby pakiety instalowały się gdzieś indziej? bo z tego co widze to mimo, że używam w PyCharmie IDE 3.3.5 to nie używam tego z pod /opt/python3.3.5 tylko tego z /usr/lib/python3.3
A mówi się, że python(i ruby tez) lepiej używa sie na linuxie, mi było osobiście prościej na windowsie7 :D

Jak się tyle nie kombinuje, to używa się lepiej :) Czy używasz jakichś elementów języka, które działają w 3.3.5, a nie działają w 3.3? Bo jeśli nie, to nie widzę problemu. W PyCharm przestaw sobie ścieżki do interpretera jak musisz używać 3.3.5. Co Ty chcesz, żeby on sam sobie szukał co zainstalowałeś w systemie 3rd party? (bo w opt zazwyczaj właśnie takie pakiety lądują).

azalut napisał(a):

Najprościej - przeinstalować pakiety z interpreterem Pythona ;)

A jak to zrobić? próbowałem w synaptic menedżeże, ale coś mi nie poszło :P Wyrzuciłem plik "python" z /usr/local/bin ale dalej po wpisaniu w konsole "python" pojawia sie 3.3.5

Tak próbowałeś? :
zrzut_ekranu.png
Jak nie pójdzie, to jeszcze to samo możesz zrobić z zależnościami tego pakietu (python2.7 itd.).

azalut napisał(a):

@MarekR22
Czyli ten nagłówek wymusza używanie interpretera z podanej ścieżki ?

Wymusza, jeśli skrypt uruchamiasz w taki sposób:
./skrypt.py
Bo jeśli uruchamiasz tak:
python skrypt.py
To skrypt się uruchomi w interpreterze "python".

1 użytkowników online, w tym zalogowanych: 0, gości: 1