jak zainstalować distutils Pythona


90

Właśnie dostałem miejsce na serwerze VPS (działającym na Ubuntu 8.04) i próbuję zainstalować na nim django. Na serwerze jest zainstalowany python 2.5, ale myślę, że jest to niestandardowa instalacja. Kiedy uruchamiam skrypt instalacyjny dla django, otrzymuję

amitoj@ninja:~/Django-1.2.1$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 1, in <module>
    from distutils.core import setup
ImportError: No module named distutils.core

Jestem zdumiony. Wszystkie artykuły w Internecie mówią mi, jak zainstalować moduły za pomocą distutils. Ale jak mogę zdobyć same distutils? Czy ktoś może wskazać mi archiwum dla distutils? Szukałem w /usr/lib/local/python2.5, /usr/lib/python2.5 itd. I zgodnie z oczekiwaniami nie ma żadnych plików do znalezienia.

Odpowiedzi:


6

Najprostszym sposobem na zainstalowanie setuptools, gdy go tam nie ma i nie możesz użyć menedżera pakietów, jest pobranie pliku ez_setup.py i uruchomienie go za pomocą odpowiedniego interpretera Pythona. Działa to nawet jeśli masz wiele wersji Pythona: po prostu uruchom ez_setup.py raz z każdym Pythonem.

Edycja: zwróć uwagę, że najnowsze wersje Pythona 3 zawierają setuptools w dystrybucji, więc nie musisz już instalować oddzielnie. Wspomniany tutaj skrypt dotyczy tylko starszych wersji Pythona.


3
Dzięki za odpowiedź, ale nie udało się. Otrzymuję ten błąd „import _md5 ImportError: brak modułu o nazwie _md5”. Podstawowa instalacja Pythona jest chyba dość schrzaniona. Pójdę z lokalną instalacją. W każdym razie wielkie dzięki.
Neo

2
Składnia tego skryptu wydaje się nieaktualna. Przynajmniej nie będzie działać w pythonie 3.6, więc obecnie nie jest to świetne rozwiązanie.
Jmills

1
@Jmills Python od 3.4 wzwyż zawiera narzędzia instalacyjne, więc nie ma potrzeby uruchamiania tego skryptu w najnowszych wersjach. Pytanie dotyczyło Pythona 2.
Duncan

5
@Duncan O tak, to mówi Python2 - więc ten błąd można napotkać instalując Python3.6 na Ubuntu 16.04, to jest to, co mnie tu przywiodło i sudo apt-get install python3-distutilsnaprawię to. Ale twoja uwaga wyjaśnia różnicę wersji.
Jmills

2
Wygląda na to, że 14.04, 16.04 oba mają to "wbudowane", ale w 18.04 trzeba zainstalować python3-distutilsFWIW ...
rogerdpack

202

Wiem, że to stare pytanie, ale właśnie natknąłem się na ten sam problem przy użyciu Pythona 3.6 w Ubuntu i jestem w stanie rozwiązać go za pomocą następującego polecenia:

sudo apt-get install python3-distutils

6
Ten pakiet dosłownie nie istnieje w Ubuntu 16.04. packages.ubuntu.com/search?keywords=python3-distutils
Nicholi

7
Działał jak urok 18.04
siedliska

2
Pojawia się błąd E: Pakiet „python3-distutils” nie ma kandydata do instalacji w Ubuntu 18.4
Ganesh

1
Tak samo jak @Ganesh, has no installation candidateUbuntu 16.04.6 LTS
hugo blanc

Mam to zainstalowane dla python3.7, ale kiedy dla python3.6 nie pokazuje żadnego modułu distutils.utils, co mam zrobić?
Sarthak

20

Jeśli nie możesz zainstalować za pomocą jednego z poniższych:

sudo apt-get install python-distutils
sudo apt-get install python3-distutils

Spróbuj tego zamiast tego:

sudo apt-get install python-distutils-extra

Odniesienie: https://groups.google.com/forum/#!topic/beagleboard/RDlTq8sMxro


Otrzymuję błąd: Errors were encountered while processing: oracle-java11-installer-local E: Sub-process /usr/bin/dpkg returned an error code (1)
mLstudent33

ale mój java -versionwygląd jest w porządku: java version "11.0.4" 2019-07-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode)
mLstudent33

Jaka jest różnica między python3-distutils-extra(na Ubuntu16.04) a python3-distutils(nie można zlokalizować na python3-distutils-extra)?
SkyTree

Per packages.debian.org: "Ten pakiet (python3-distutils-extra) dostarcza dodatkowe funkcje do distutils i setuptools Pythona." Wydawałoby się więc, że distutils to zależność od distutils-extra. Dlaczego instalacja distutils-extra miałaby się powieść tam, gdzie instalacja distutils się nie powiedzie, nie mogę powiedzieć.
Ben Amos


12

Możesz zainstalować python-distutilspakiet. sudo apt-get install python-distutilspowinno wystarczyć.


Nie mogę tego zrobić. To serwer VPS, nie mam uprawnień sudo. Myślę o zainstalowaniu lokalnego Pythona. Albo to, albo znajduję archiwum distutils dla Pythona 2.5.
Neo

3
Jeśli instalujesz lokalny przełącznik Pythona do wersji 2.6 lub 2.7, są distutilsdostarczane z pakietem.
Manoj Govindan

2
Cały Python zawiera distutils od 1999 roku. Wygląda na to, że jeden z głupich systemów operacyjnych, który podzielił bibliotekę standardową na dowolne pakiety python i python-devel.
Éric Araujo

7

Natknąłem się na ten błąd na Beaglebone Black przy użyciu standardowej dystrybucji Angstrom. Obecnie działa na nim Python 2.7.3, ale nie zawiera distutils. Rozwiązaniem dla mnie była instalacja distutils. (Wymagało to uprawnień su.)

    su
    opkg install python-distutils

Po tej instalacji poprzednio błędne polecenie działało poprawnie.

    python setup.py build

2

Jeśli jesteś w scenariuszu, w którym używasz jednej z najnowszych wersji Ubuntu (lub wariantów, takich jak Linux Mint), takiej, która jest dostarczana z Pythonem 3.8, to NIE będziesz w stanie mieć Pythona3.7 distutils, alias nie będzie w stanie używać piplub pipenvz Pythonem 3.7, zobacz: Jak zainstalować python-distutils dla starszych wersji Pythona

Oczywiście używanie Pythona 3.8 nie stanowi problemu.


0

Jeśli systemowy Python jest zepsuty (tj. Pakiety systemu operacyjnego dzielą dystrybucję w pakiecie python-devel) i nie możesz poprosić administratora systemu o zainstalowanie brakującego elementu, musisz zainstalować własny Python. Wymaga plików nagłówkowych i zestawu narzędzi kompilatora. Jeśli nie możesz ich mieć, spróbuj skompilować Pythona na identycznym komputerze i po prostu go skopiować.


-8

Możesz spróbować zainstalować Python 2.6,

sudo apt-get install python2.6

Powinno to zainstalować najnowszy pakiet Pythona i distutils.


Nie mogę zrobić sudo. Myślę, że będę musiał zdobyć lokalną instalację Pythona.
Neo
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.