Pip - błąd krytyczny w programie uruchamiającym: nie można utworzyć procesu przy użyciu „” ”


87

Zainstalowałem Pythona 3.5.1 przez ampps i działa. Jednak gdy próbuję użyć pip, pojawia się następujący komunikat:

Fatal error in launcher: Unable to create process using '"'

Zainstalowałem już wzmacniacze w ścieżce, która nie zawiera żadnych białych znaków. Zwróć uwagę, że obejście „python -m pip” również nie działa dla mnie, ponieważ za każdym razem, gdy go używam, otrzymuję następujący komunikat:

C:\Users\MyUserName\Desktop\Ampps\python\python.exe: Error while finding spec for 'pip.__main__' (<class 'ImportError'>: No module named 'queue'); 'pip' is a package and cannot be directly executed

Jak sprawić, by pip działał poprawnie? Mam nadzieję, że istnieje sposób na użycie samego polecenia pip bez poprzedniego polecenia w języku Python.

EDYCJA: tak się dzieje, jeśli spróbuję uruchomić python -c "import pip.__main__":

Traceback (most recent call last):
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\site-packages\pip\compat\__init__.py", line 11, in <module>
    from logging.config import dictConfig as logging_dictConfig
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\logging\config.py", line 30, in <module>
    import logging.handlers
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\logging\handlers.py", line 28, in <module>
    import queue
ImportError: No module named 'queue'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\site-packages\pip\__init__.py", line 13, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\site-packages\pip\utils\__init__.py", line 18, in <module>
    from pip.compat import console_to_str, stdlib_pkgs
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\site-packages\pip\compat\__init__.py", line 13, in <module>
    from pip.compat.dictconfig import dictConfig as logging_dictConfig
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\site-packages\pip\compat\dictconfig.py", line 22, in <module>
    import logging.handlers
  File "C:\Users\MyUserName\Desktop\Ampps\python\lib\logging\handlers.py", line 28, in <module>
    import queue
ImportError: No module named 'queue'

Co się dzieje, gdy python -c "import pip.__main__"
biegasz

1
Podczas korzystania z opcji -mi pamiętaj o bieżącym katalogu -c. W tym przypadku nie ma skryptu, więc Python po prostu ustawia dowolny bieżący katalog sys.path[0]. Dlatego moduły i pakiety w bieżącym katalogu mogą przesłonić moduły i pakiety lokacji, takie jak pipi queue.
Eryk Sun

3
Upewnij się, że oryginalny katalog instalacyjny został całkowicie usunięty z dysku, a jego katalogi zostały usunięte PATH, tak aby działał poprawny pip.exe. Możesz także zaktualizować pip, aby nadpisać zły pip.exe, co możesz zrobić za pomocą python -m pip install --upgrade pip.
Eryk Sun

@eryksun Każdy wymieniony przez Ciebie punkt jest przestrzegany, ale to też nie pomaga.
rinderwahn

1
@eryksun Nie mogę również użyć żadnego python -m pippolecenia, ponieważ wszystkie generują alerty "Błąd podczas znajdowania specyfikacji dla 'pip .__ main __'...".
rinderwahn

Odpowiedzi:


81

Rozwiązałem problem przez ...

  1. pobranie Pythona 3 z oficjalnej strony internetowej i zainstalowanie go w trybie ekspresowej instalacji
  2. Skopiuj i wklej samodzielny język Python do folderu ampps / python i nadpisuj wersję języka Python dostarczoną przez AMPPS
  3. uruchomiony python -m pip install --upgrade pipw cmd

Teraz pip i python 3 są zainstalowane w najnowszej wersji.

Wygląda na to, że AMPPS nie zapewnia pełnoprawnej kompilacji Pythona. Musisz więc samodzielnie zaktualizować Pythona.

Dzięki wam.


python2 -m pip install --upgrade pipdla pythona2.7, gdzie python2zostało zdefiniowane w zmiennych ENV_PATH
Ashish Choudhary

2
Zwróć uwagę, że w zależności od tego, gdzie zainstalowałeś Pythona, może być konieczne uruchomienie cmd z uprawnieniami administratora.
mbomb007

5
Zauważ, że dla mnie (uruchamiając wersję Python na python.org w systemie Windows 10) było absolutnie konieczne użycie rozszerzenia python -m pip <additional parts of command>. Na przykład pip install requestspodał mi błąd zanotowany w tytule pytania, ale pięknie python -m pip install requestszainstalowałem requestsmoduł.
bballdave025

2
Miałem ten sam problem ... klucz był taki, jak powiedział Mulder:python -m pip install --upgrade pip
rob_7cc

41

Ten sam błąd, ale w innej sytuacji. Mam wirtualne środowisko, w którym biegałem, w katalogu VE \Scriptsgdzie pip.exejest:

pip freeze

Otrzymałem komunikat o błędzie

Fatal error in launcher: Unable to create process using '"'

W mojej ścieżce VE nie ma miejsca (wygoogluj ten błąd). Potem spróbowałem python -m pip install --upgrade pipi dostałem

Requirement already up-to-date: pip in o:\upsdowns\flask\lib\site-packages

więc wtedy spróbowałem

python -m pip freeze

i to zadziałało. Myślę, że może to być problem ze ścieżką w VE, ale nie przeszkadza mi to obejście.

Dodam to tutaj, ponieważ ta strona jest wysoko, kiedy wyszukujesz w Google ten komunikat o błędzie. Innymi słowy, nie zadałem nowego pytania, mimo że moja sytuacja jest zupełnie inna niż w PO. Być może nawet wpadłem w taką sytuację, ponieważ nie dodałem poprawnie modułów do środowiska wirtualnego.

W każdym razie, mam nadzieję, że to pomoże.


Działa jak marzenie. Napotkałem ten błąd po poruszaniu się po moich plikach Pythona i próbie uruchomienia ipythona z PyCharm
Ic3fr0g

1
Dzięki za wskazówkę, napotkałem wiele problemów z pip w środowisku wirtualnym, więc ta wskazówka wraz z innymi, które zebrałem, wykonuj zadanie. Dodałbym: instalacja nowych pakietów w wirtualnym środowisku env wymaga tego samego procesu: `` python -m pip install newpackage ''
mf.cummings

Na wypadek, gdyby to komuś pomogło, mam ten problem w tym kontekście: stackoverflow.com/a/50194143/639739
Grault

24

Znalazłem bardzo proste rozwiązanie, (Pip - błąd krytyczny w programie uruchamiającym :)

1) Nie możesz mieć wielu zmiennych środowiskowych dla ścieżki Pythona.

A) Goto Environmental Variables and delete Python27 in the path if you have Python 3.6.5 installed.  Pip is confused by multiple paths!!!

jak przejść do zmiennych środowiskowych?
veritaS

2
@veritaS - Jeśli używasz systemu Windows 10, po prostu spróbuj wpisać „zmienne środowiskowe” w pasku wyszukiwania. Spójrz na zmienną Path dla użytkownika i systemu. Moje dwie zmienne ścieżki były w konflikcie, ponieważ obie zawierały ścieżkę Pythona.
Kyle Delaney

1
Zrobiłem to i pip nadal jakoś odnosi się do starej ścieżki
lone_coder

16

uruchom ten kod Pythona:

import pip
pip.main(['install','flask']) # replace flask with the name of module you want to install

Jeśli chcesz zainstalować wiele modułów z pliku Requirements.txt,

import pip
fo = open("C:/...../requirements.txt", "r")
inp = fo.read()
ls =inp.split()     

for i in ls:
    pip.main(['install',i])

2
To zadziałało dla mnie; uruchamianie pip w Pythonie zamiast w wierszu poleceń systemu Windows. Próbowałem zainstalować pakiet wizualizacji Brunel, ale Anaconda i wiersz poleceń nie działały. Dziękujemy za opublikowanie tego alternatywnego rozwiązania.
Joseph True

To świetny pomysł na obejście problemów, które mogą tworzyć ścieżki systemu Windows. Brawo! Dziękuję również za dołączenie instrukcji requirements.txtinstalacji. Myślę, że to pomoże wielu ludziom.
bballdave025

15

To działało dla mnie pod Windows 10 x64:

Upewnij się, że katalogi Pythona znajdują się w ścieżce , np .:

# Edit Environment variables so that variable "path" points to the new location.
# Insert these at the start of the list (or delete other Python directories), as Windows takes the first match it finds.
# Run the program "Edit the System Environment Variables".
# Or see Control Panel under "System Properties".
S:\Research\bin\Python375\Scripts\
S:\Research\bin\Python375\

Następnie:

python -m pip install --upgrade --force-reinstall pip

W moim przypadku błąd był spowodowany przeniesieniem katalogu Pythona do nowej lokalizacji.


7

Najszybszy sposób to:

python -m pip install pip==9.0.0

Jeśli chcesz mieć najnowszy pip, możesz uruchomić

pip install -U pip

potem.


Dzięki Antony. Powrót do pip 9.0.0 z 9.0.1 zadziałał dla mnie. Myślę, że jest jakiś problem z wersją 9.0.1. Zauważ, że używam python3 do nowych kompilacji i używam python2 do sprawdzania starych kodów i projektów. Używam pip2 do instalowania pakietów dla Python2.
Gorkem,

To było świetne. Przeniosłem swój virtualenv i nie mogłem dowiedzieć się, jak zmienić, na co patrzy pip, na podstawie innych sugestii - o wiele łatwiej jest zainstalować nowy pip. Dzięki.
HFBrowning

7

Sprawdziłem ścieżkę środowiska, mam dwie ścieżki nawigacyjne do dwóch pip.exe i to spowodowało ten błąd. Po usunięciu nadmiarowego i ponownym uruchomieniu komputera problem został rozwiązany. Naprawiono ten sam problem z poleceniem jupyter.


mam C; \ Users \ ... Python \ Python37-32
Akin Hwan

6

Jeszcze jedno bardzo podstawowe i proste rozwiązanie. Uruchom plik instalacyjny odpowiedniej wersji języka Python (plik instalacyjny) i kliknij tryb naprawy. Zajmuje to zaledwie dwie minuty, a potem wszystko działa idealnie :)


Wypróbowałem i wypróbowałem wiele innych rozwiązań, ale żadne z nich nie działało. Powodem tego było to, że po uruchomieniu trybu naprawy pip został zdegradowany z wersji 10 do wersji 9. Zaktualizowałem go. Wersja 9 działała dobrze, wersja 10 po prostu nie działała.
Michael Swartz

4

Otrzymałem ten sam błąd, gdy zainstalowałem zarówno python2, jak i python3 na moim Windows 7.

Możesz użyć python3 -m pip install xxxxxxdo zainstalowania pakietu.

Lub napraw to całkowicie:

  1. Spróbuj uruchomić python3 -m pip install --upgrade pipw cmd.

  2. Jeśli nie powiodło się w kroku 1, spróbuj python3  -m pip install --upgrade --force-reinstall pip


3

Zdarzyło mi się to przy użyciu pakietu pip, po czym rozwiązałem to jak poniżej:

1) Przede wszystkim odinstaluj pip za pomocą polecenia Python

$python -m pip uninstall pip

2) Następnie ponownie zainstaluj pakiet pip za pomocą polecenia easy_install

$easy_install pip

3) Na koniec spróbuj ponownie polecenie pip bezpośrednio w wierszu poleceń, zainstaluj dowolny pakiet

$pip install pylint

lub wykonaj tylko polecenie pip

$pip

3
to zadziałało dla mnie, ale chciałbym zrozumieć, dlaczego to zadziałało i nie robię python -m pip install --upgrade --force-reinstaluj pip
dim_user Kwietnia

2
Myślę, że dzieje się tak, gdy Python PATH jest uszkodzony. Tak więc pippolecenie nie może zmodyfikować tej PATH Pythona, aby zainstalować nowy pakiet; dlatego powinieneś użyć innych narzędzi, takich jak easy_install. Zdarzyło mi się to w systemie Windows, ale jeśli chcesz spróbować, możesz ponownie zainstalować środowisko Python.
Juan Castaño

3

PRACOWAĆ W PORZĄDKU !!!

Po prostu zaktualizuj swój pakiet pip, uruchamiając poniższe polecenie. python3 -m pip install --upgrade pip

Uwaga: zainstalowałem zarówno wersję Pythona 3.6, jak i 2.7. Dlatego wyraźnie określiłem python3

Migawka

C:\AK>pip3 install argparse
Fatal error in launcher: Unable to create process using '"c:\python36\python.exe"  "C:\Python36\Scripts\pip3.exe" install argparse'

C:\AK>python3 -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/30/db/9e38760b32e3e7f40cce46dd5fb107b8c73840df38f0046d8e6514e675a1/pip-19.2.3-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 312kB/s
Installing collected packages: pip
  Found existing installation: pip 18.1
    Uninstalling pip-18.1:
      Successfully uninstalled pip-18.1
Successfully installed pip-19.2.3

C:AK>pip3 install argparse
Collecting argparse
  Using cached https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl
Installing collected packages: argparse
Successfully installed argparse-1.4.0

3

Moje zmienne środowiskowe zostały ustawione poprawnie i ponownie zainstalowałem Pythona , zaktualizowałem pip - nic nie działało, ale poniższe rozwiązanie:

Rozwiązałem problem przechodząc do folderu:

C:\Users\YOUR_USERNAME\AppData\Local\Programs\Python\

i usunięcie wszystkich wersji Pythona oprócz tej, której używasz. W tym folderze miałem 3 wersje Pythona .


2

Moje rozwiązanie jest dość proste, napotkałem ten sam problem

Fatal error in launcher: Unable to create process using '"'

rozwiązaniem była zmiana ścieżki, z której uruchamiam pip.


5
Gdzie zmieniłeś ścieżkę?
Kevin R.

2

żadna z pozostałych odpowiedzi nie pomogła mi w przypadku: obniżenie wersji Pythona z 3.6 do 3.5 w celu użycia pakietu pyinstaller.

oto rozwiązanie dla tego konkretnego przypadku:

  1. pip uninstall
  2. przejdź do C: \ Users \ your-usern \ AppData \ Local \ Programs \ Python \ Python36 \ Scripts
  3. usunąć skrypt przypominający, czyli w moim przypadku pyinstaller.exe
  4. instalacja pip

prawdopodobnie również dla Ciebie zadziała.


Miałem już reinstalator pip, ponieważ miałem ten sam błąd podczas używania pip, ale po ponownej instalacji pip worker, ale nadal nie pojawił się pyinstaller. Więc przeinstalowałem pyinstaller
veritaS

2

Otrzymałem ten sam błąd, ale podczas używania tensorboard:

Fatal error in launcher: Unable to create process using '"'

Dowiedziałem się, że problem był spowodowany istniejącymi dwiema kopiami tensotboard.exe w dwóch różnych katalogach i oba katalogi zostały dodane do ścieżki:

C:\Program Files\Python36\Scripts

i

C:\Users\...\AppData\Local\Programs\Python\Python36\Scripts

Usunąłem pierwszy ze ścieżki i naprawił problem.


2

Zainstalowałem pythona 2 i pythona 3 w moich Windows 7. Po zainstalowaniu obu wersji pythona przeniosłem się do pobrania PIP.

Po pobraniu pip poprzez pobranie pliku get-pip.py, uruchom wiersz poleceń i przejdź do folderu zawierającego plik get-pip.py.

Uruchamiam następujące polecenie:

python get-pip.py

po pobraniu PIP otrzymywałem następujący błąd, Błąd krytyczny w programie uruchamiającym: Nie można utworzyć procesu przy użyciu „” ” ROZWIĄZANIA ** Wtedy to, co mi zadziałało, to: Po prostu uruchamiam następujące polecenie

python3 -m pip install --upgrade pip

I mój pip zaczął działać. Mam nadzieję, że to pomoże !**


1

Zacząłem widzieć ten błąd po przeniesieniu projektu (w tym jego środowiska wirtualnego). Usunięcie i odtworzenie środowiska wirtualnego naprawiło wszystko.

Jak wspomniał RolfBly, uruchomienie python -m pip freeze > somefileprzed usunięciem środowiska pozwala na szybkie przywrócenie: uruchomienie pip -r somefilew nowym środowisku przywróci wszystkie pakiety.



1

Próbowałem zainstalować pakiet „butelkowy” w Pythonie 3.6.6 z wersją pip 18.0 w systemie Windows. Napotkałem ten sam błąd, co następujący: -

Fatal error in launcher: Unable to create process using '"c:\users\arnab sinha\python.exe"  "C:\Users\Arnab Sinha\Scripts\pip.exe" install bottle'

Wszystko, co po tym napisałem, to

py -m pip install bottle

To rozwiązało mój problem.


1

Dla mnie był to błąd na mojej drodze. Powinieneś bezpośrednio wywołać skrypt, używając katalogu, w którym jest przechowywany.

C:\Users\YourUserName\AppData\Local\Programs\Python\Python36\Scripts\pip install requests

A do uruchamiania skryptów Pythona możesz to zrobić:

C:\Users\Avanish\AppData\Local\Programs\Python\Python36\python -m pip install requests

1

Wszystkie powyższe odpowiedzi są bardzo pomocne technicznie. Niedawno spotkałem się z tym samym problemem z powodu błędu, który popełniłem w moim projekcie.

Utworzyłem venvw katalogu głównym mojego projektu, wydając poleceniepython -m venv . a potem z jakiegoś powodu nie podobała mi się nazwa mojego projektu. Więc zmieniłem to i bum.

pipZacząłem zachowywać się chaotycznie i przeszukałem dziesiątki forów, myśląc, że jakiś uszkodzony plik wkradł się do mojej instalacji Pythona. Nie znalazłem tam rozwiązania, które mogłoby mi pomóc. Wreszcie otworzyłem activate.batplik, aby dowiedzieć się, jak ten skrypt zmienia moje środowisko i tam zobaczyłem wspomnianą nazwę starego projektu.Eureka!

Wróciłem do mojej starej nazwy projektu i wszystko poszło gładko. Bez ponownej instalacji. Bez prośby o zmianę do administratora biura. Bez zwłoki.

ROZWIĄZANIE: Jeśli zmieniłeś nazwę swojego projektu po utworzeniu swojego venv, możesz napotkać ten błąd. Przywrócenie nowej nazwy do starej pozwoli zaoszczędzić czas i wysiłek. Nie zapomnij także zagłosować za, jeśli ta odpowiedź pomogła.


1

Otrzymałem ten sam błąd i zastosowałem kilka odpowiedzi. Próbowałem zaktualizować i zainstalować wersję 9.0.0 pip za pomocą poniższych poleceń

python3 -m pip install --upgrade pip
python -m pip install pip==9.0.0

W przypadku obu poleceń otrzymałem ostrzeżenie, które wyglądało tak

OSTRZEŻENIE: Ponawianie (ponowienie (łącznie = 4, połączenie = brak, odczyt = brak, przekierowanie = brak, stan = brak))

Wydawało się, że nic nie działa. Straciłem pacjentów i wykonałem poniższe kroki i sprawiłem, że zadziałało

  1. Przejdź do ścieżki „C: \ Users ... Python \ Python37-32 \ Scripts”
  2. Usuń pliki pip, pip3, pip3.7
  3. Następnie użyłem polecenia python -m pip install pip==9.0.0 które następnie zainstalowało pip
  4. Następnie wprowadziłem wymagane polecenie pyperclip, które chciałem wykorzystać, czyli pip install pyperclip

Zignoruj ​​czwarty krok. Dodanie go tylko po to, aby ludzie wiedzieli, że udało mi się również zainstalować wymaganego pyperclip'a pozornie, jeśli w ogóle ktoś jest na tej samej ścieżce, aby zainstalować niektóre moduły dalej


1

Zwykle jest to spowodowane ustawieniem wersji Pythona w zmiennych środowiskowych. Sprawdź PATH (lub ścieżkę) dla zmiennych systemowych i klienta.

Jeśli wskazuje na „path / to / python-installation / Python3.x-32”, zmień go na „path / to / python-installation / Python3.x”

Ponownie sprawdź wartość w zmiennych środowiskowych systemu i klienta


0

Zacząłem widzieć

Fatal error in launcher: Unable to create process using '"'

po zainstalowaniu Pythona 3.6 na komputerze z systemem Windows 10. Ustawiłem zmienną Path tak, aby wskazywała na folder Python36. Polecenie Pythona działało poprawnie, ale polecenie pip nie.

Aby naprawić błąd, otworzyłem powłokę wiersza poleceń z uprawnieniami administratora i uruchomiłem polecenia pip.


0

Sprawdź zmienną środowiskową PATH systemu Windows. Ma limit 260 znaków, a lokalizacja Pythona może przekraczać ten limit.

Możesz przenieść ścieżki Pythona wyżej na liście ścieżek lub wyłączyć limit znaków systemu Windows, jak opisano tutaj: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85) .aspx

Klucz rejestru umożliwia włączenie lub wyłączenie nowego zachowania długiej ścieżki. Aby włączyć zachowanie długiej ścieżki, ustaw klucz rejestru w HKLM \ SYSTEM \ CurrentControlSet \ Control \ FileSystem LongPathsEnabled (typ: REG_DWORD). Wartość klucza zostanie zbuforowana przez system (na proces) po pierwszym wywołaniu odpowiedniej funkcji pliku lub katalogu Win32 (lista poniżej). Klucz rejestru nie zostanie ponownie załadowany w czasie trwania procesu. Aby wszystkie aplikacje w systemie rozpoznawały wartość klucza, może być wymagane ponowne uruchomienie, ponieważ niektóre procesy mogły zostać uruchomione przed ustawieniem klucza.

Klucz rejestru można również kontrolować za pomocą zasad grupy w Konfiguracja komputera> Szablony administracyjne> System> System plików> Włącz długie ścieżki NTFS.


0

Moim rozwiązaniem jest uruchomienie twine uploadplikupython -m argument.

Więc po prostu użyj python -m:

python -m twine upload dist/*


0

Napotkałem ten sam błąd, co ty. To dlatego, że przeszczepiłem mój plik Pythona z dysku D na dysk e. potem, kiedy wprowadziłem Pythona, zadziałało. pip i inny plik exe, który ma taką samą ścieżkę jak pip , nie działał. kiedy wprowadzono kolejność "python -m pip install --upgrade pip" , zamówienie pip działało, ale inny plik exe, który ma taką samą ścieżkę jak pip, nie działał, więc myślę, że nie jest to najlepszy sposób. w końcu odinstalowałem mojego Pythona i ponownie go zainstalowałem. wszystko jest w porządku. może nie jest to najlepszy sposób dla was wszystkich, ale dla mnie.


0

Otrzymałem ten błąd podczas uruchamiania polecenia za pomocą pip3. Mam zainstalowanego Pythona 3.6 w systemie Windows. Próbowałem tego-

pip3 install PACKAGENAME

Dało to błąd. Rozwiązaniem w tym konkretnym przypadku jest po prostu uruchomienie polecenia jako pip.

pip install PACKAGENAME



0

Jeśli żadne z powyższych rozwiązań nie działa, może to być spowodowane zmiennymi środowiskowymi wskazującymi na dwie różne lokalizacje. Po prostu użyj, where virtualenvaby znaleźć ścieżki, które są połączone z poleceniem virtualenv. Uruchom następujące polecenie w cmd.

D:\>where virtualenv

Wynik będzie wyglądał następująco:

C: \ Program Files \ Python37 \ Scripts \ virtualenv.exe

C: \ Users \ nazwa użytkownika \ AppData \ Local \ Programs \ Python \ Python36 \ Scripts \ virtualenv.exe

Możesz zobaczyć, że występuje konflikt instalacji python36 i python37. Właśnie usunąłem folder python37 i konflikt został rozwiązany.

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.