Pełny stacktrace:
➜ ~ pip install virtualenv
Traceback (most recent call last):
File "/usr/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib64/python3.4/locale.py", line 592, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Na tym samym serwerze udało mi się uruchomić pip install virtualenv
z pythonem 2.7.x.
Teraz właśnie zainstalowałem Python3.4 przy użyciu curl https://bootstrap.pypa.io/get-pip.py | python3.4
.
➜ ~ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)
pip uninstall virtualenv
zgłasza ten sam błąd
python
python-3.x
centos
pip
ericn
źródło
źródło
LANG=en_GB.utf8
Odpowiedzi:
Główną przyczyną jest:
LC_ALL
brakuje zmiennej środowiskowej lub jest ona w jakiś sposób niepoprawnaKrótka odpowiedź-
po prostu uruchom następujące polecenie:
Jeśli błąd pojawia się w nowych oknach terminala, dodaj go u dołu
.bashrc
pliku.Długa odpowiedź-
Oto moje
locale
ustawienia:Python2.7
źródło
export LC_ALL=C
pomogłem.LC_ALL=C
znaczy, zobacz tutaj .Uruchom następujące polecenie (zadziała):
źródło
dpkg-reconfigure
Polecenie jest przeznaczone do użycia w systemach opartych na Debianie. To pytanie jest oznaczonecentos
jako pochodna RHEL, która nie zapewnia obsługi dpkg, chyba że włączyszepel-release
repozytorium i nie zainstalujesz pakietówdpkg-devel
&dpkg-dev
. Nawet wtedy nie jest to idealne rozwiązanie.Ktoś może uznać to za przydatne. Możesz umieścić te ustawienia regionalne w pliku .bashrc, który zwykle znajduje się w katalogu osobistym.
Po prostu dodaj to polecenie do .bashrc:
export LC_ALL=C
następnie wpisz
source .bashrc
Teraz nie musisz wywoływać tego polecenia ręcznie za każdym razem, gdy na przykład łączysz się przez ssh.
źródło
Chociaż możesz ustawić ustawienia regionalne eksportujące zmienną env, musisz to zrobić za każdym razem, gdy zaczynasz sesję. Takie ustawienie regionalne rozwiąże problem na stałe:
źródło
sudo
z tej samej linii, na której próbujesz go zainstalować?sudo apt-get install ... sudo ...
[Ta odpowiedź jest skierowana tylko na platformę Linux]
Pierwszą rzeczą, którą powinieneś wiedzieć, jest to, że większość ścieżek zlokalizowanych w pliku konfiguracyjnym ustawień regionalnych można uzyskać z
localedef --help
:Widzisz ostatni
/usr/share/i18n
? Tutaj znajduje się plik konfiguracyjny xx_XX.UTF-8:Co teraz ? Musimy je skompilować do archiwum binarnego. Jednym ze sposobów, np. Zakładając, że mam
/usr/share/i18n/locales/en_LOVE
, mogę dodać go do listy kompilacji, tzn. Do/etc/locale-gen
pliku:I skompiluj go do pliku binarnego za pomocą
sudo locale-gen
:A teraz zaktualizować domyślne ustawienia regionalne systemu z pożądane
LANG
,LC_ALL
... etc z tegoupdate-locale
:update-locale
w rzeczywistości oznacza również aktualizację tego/etc/default/locale
pliku, który będzie pobierany przez system podczas logowania, aby skonfigurować zmienne środowiskowe:Ale możemy nie chcieć restartować, aby zadziałać, więc możemy po prostu pobrać go do zmiennej środowiskowej w bieżącej sesji powłoki:
Jak o
sudo dpkg-reconfigure locales
? Jeśli się wokół niego obejrzysz, będziesz wiedział, że to polecenie działa w zasadzie jako GUI, aby uprościć powyższe kroki, tj. Edycja/etc/locale.gen
->sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
Dla Pythona, o ile
/etc/locale.gen
zawiera on tego kandydata locale ilocale.gen
zostanie skompilowany,setlocale(category, locale)
powinien działać bez rzucanialocale.Error: unsupoorted locale setting
. Możesz sprawdzić poprawny ciągen_US.UTF-8
/en_US/....etc
do ustawieniasetlocale()
, obserwując/etc/locale.gen
plik, a następnie cofnąć komentarz i skompilować go zgodnie z potrzebami.zh_CN GB2312
bez kropki w tym pliku oznacza, że poprawny ciąg tozh_CN
izh_CN.GB2312
.źródło
/etc/locale.gen
, odkomentujzh_CN.UTF-8
wiersz; 2sudo locale-gen
.W przypadku Dockerfile działa to dla mnie:
Jak zainstalować gen locale-gen?
docker ubuntu / bin / sh: 1: locale-gen: nie znaleziono
źródło
Miałem ten sam problem i nie działałem dla mnie .
"export LC_ALL=c"
Spróbuj
export LC_ALL="en_US.UTF-8"
(zadziała).źródło
Komunikat o błędzie wskazuje na problem z ustawieniem regionalnym. Aby to naprawić, jak wskazują inne odpowiedzi, musisz zmodyfikować ustawienia regionalne.
W systemie Mac OS X Sierra odkryłem, że najlepszym sposobem na to jest zmodyfikowanie
~/bash_profile
pliku w następujący sposób:Ta zmiana nie będzie natychmiast widoczna w bieżącej sesji cli chyba odświeżyć profil bash za pomocą:
source ~/.bash_profile
.Ta odpowiedź jest dość zbliżona do odpowiedzi, które zamieściłem na inne nieidentyczne, niepubliczne pytania (tj. Niezwiązane z pipenv), ale które wymagają tego samego rozwiązania.
Do moderatora: z szacunkiem; moja poprzednia odpowiedź została usunięta z tego powodu, ale wydaje mi się, że to było trochę głupie, ponieważ tak naprawdę ta odpowiedź ma zastosowanie prawie zawsze, gdy błąd dotyczy „problemu z ustawieniami regionalnymi” ... ale istnieje wiele różnych sytuacji, języków i środowisk, które mogą powodować ten błąd.
Zatem A) nie ma sensu oznaczać pytań jako duplikaty, a B) nie ma sensu dostosowywać odpowiedzi, ponieważ poprawka jest bardzo prosta, jest taka sama w każdym przypadku i nie korzysta z ozdób.
źródło
Ubuntu:
$ sudo vi /etc/default/locale
Dodaj poniższe ustawienie na końcu pliku.
LC_ALL = en_US.UTF-8
źródło