Pelican 3.3 kesalahan pelican-quickstart “ValueError: lokal tidak diketahui: UTF-8”

154

Ketika saya mencoba menggunakan pelican3.3, saya mengetikkan perintah "pelican-quickstart", beberapa kesalahan muncul.

Ini adalah kesalahannya:

(PelicanEnv)59-127-113-90:myblog Richo$ pelican-quickstart
Traceback (most recent call last):
  File "/Users/Richo/Dropbox/Github/PelicanEnv/bin/pelican-quickstart", line 9, in <module>
    load_entry_point('pelican==3.3', 'console_scripts', 'pelican-quickstart')()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/__init__.py", line 16, in <module>
    from pelican.generators import (ArticlesGenerator, PagesGenerator,
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/generators.py", line 20, in <module>
    from pelican.readers import Readers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/readers.py", line 11, in <module>
    import docutils.core
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/core.py", line 20, in <module>
    from docutils import frontend, io, utils, readers, writers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/frontend.py", line 41, in <module>
    import docutils.utils
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/__init__.py", line 20, in <module>
    import docutils.io
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/io.py", line 18, in <module>
    from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/error_reporting.py", line 47, in <module>
    locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1]
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 513, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 445, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

OS saya adalah OS X Mavericks.

Richo
sumber
memiliki masalah yang sama saat menggunakan kivy, pada maverick
Ciasto piekarz

Jawaban:

456

Anda dapat mencoba solusi yang diposting di sini atau di sini . Pada dasarnya, tambahkan beberapa baris ke ~ / .bash_profile Anda:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Ada laporan bug yang beredar terkait dengan masalah ini. Tampaknya Python membuat beberapa asumsi tentang format nama lokal yang tidak berlaku secara universal. Secara eksplisit mengatur vars lingkungan ini pada dasarnya hanya solusi untuk bug itu.

[Sunting:] Seperti yang ditunjukkan @asmeurer dengan benar, perbaikan di atas mengasumsikan bahasa Inggris dan AS. Anda harus benar-benar memilih lokal pilihan Anda dari daftar yang diberikan oleh locale -a(umumnya yang diakhiri dengan UTF-8).

Gerrat
sumber
Saya sudah logout / login pc. Terima kasih untuk segalanya.
Jose Carlos Ramos Carmenates
8
Ini memecahkan masalah bagi saya juga dengan anaconda di MAC OSX di shell ikan. set -x LC_ALL en_US.UTF-8 set -x LANGen_US.UTF-8
andershqst
2
Itu berhasil tetapi adakah yang bisa menjelaskan mengapa kita harus melakukannya?
jblixr
6
Berikut ini adalah satu-liner untuk melakukan ini dengan lebih nyaman:echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
waldyrious
2
Perbaikan ini hanya benar jika Anda berbicara bahasa Inggris dan tinggal di AS (yang biasanya tidak berlaku untuk orang yang melihat masalah ini). Perbaikan sebenarnya adalah mengatur LANG ke string yang benar untuk lokal Anda (Anda dapat membuat daftar semuanya dengan locale -a), umumnya menggunakan yang berakhir dengan UTF-8.
penanggung jawab
9

Jawaban Gerrat bekerja, dan saya percaya kita harus menyebutkan bahwa jika Anda menggunakan sesuatu seperti zsh, Anda harus menambahkan baris ke ~/.zshrcbukan ~/.bash_profileatau~/.bash_rc

JasonWayne
sumber
9

Jawaban di atas sangat cepat! Tapi saya percaya orang-orang malas seperti saya ingin mengubah lingkungan global kalau-kalau tidak pernah berubah lagi saat mengubah ke pengguna Login lain. Jadi kita perlu mengubah file seperti:

sudo vi /etc/profile or sudo vi /etc/bashrc

Dan kemudian tambahkan dua baris dalam file-file berikut

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"

Ingat jangan lewatkan salah satu dari mereka, itu tidak berfungsi untuk saya hanya $ LANG atau $ LC_ALL. Setelah itu jalankan perintah untuk mengaktifkan lingkungan.

sudo source /etc/profile 
sudo source /etc/bashrc
source ~/.bash_profile 
source ~/.zshrc

Sekali lagi, orang-orang malas seperti saya dapat menyelesaikan dalam satu perintah baris.

echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bash_profile && source ~/.bash_profile
Sanjay Chan
sumber
3

Saya mem-posting ulang jawaban saya dari pertanyaan ini di sini, karena itu ditandai sebagai duplikat dari yang ini, dan jawaban yang diterima pada pertanyaan ini salah dalam banyak hal.

Ini adalah bug di aplikasi OS X Terminal yang hanya muncul di lokal tertentu (kombinasi negara / bahasa). Buka Terminal di / Aplikasi / Utilitas dan hapus centang pada kotak "Setel variabel lingkungan lokal saat startup".

masukkan deskripsi gambar di sini

Ini akan mengatur LANGvariabel lingkungan Anda menjadi kosong. Ini dapat menyebabkan penggunaan terminal ke pengaturan yang salah untuk lokal Anda. Perintah lokal di Terminal akan memberi tahu Anda pengaturan apa yang digunakan. Untuk menggunakan bahasa yang benar, tambahkan baris ke profil bash Anda (biasanya ~/.profile)

export LANG=your-lang

Ganti your-langdengan specifier lokal yang benar untuk bahasa Anda. Perintah locale -aakan menunjukkan kepada Anda semua specifier. Misalnya, kode bahasa untuk bahasa Inggris AS adalah en_US.UTF-8. Lokal memengaruhi terjemahan apa yang digunakan saat tersedia, dan juga bagaimana tanggal, mata uang, dan desimal diformat.

Catatan, gambar dan konten ini diambil dari http://conda.pydata.org/docs/troubleshooting.html#unknown-locale (saya juga penulis asli halaman itu).

penilai
sumber
2

Tidak ada solusi yang disebutkan di sini yang berfungsi untuk saya menjalankan proyek python 3.7 di lingkungan mesin aplikasi lokal.

Meskipun saya dapat mengambil lokal melalui baris perintah dengan baik:

python3 -c 'import locale; print(locale.getdefaultlocale());'
('en_US', 'UTF-8')  

Lokal itu tidak dapat ditemukan dalam lingkungan mesin aplikasi:

File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 568, in getdefaultlocale
    return _parse_localename(localename)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 495, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Jadi saya harus secara eksplisit mengatur env_variablesfile app.yaml saya:

env_variables:
  LC_ALL: "en_US:UTF_8"
  LC_CTYPE: "en_US:UTF_8"

Dan itu memecahkan bug.

Stiño
sumber
1

Untuk beberapa alasan saya juga membutuhkan:

export LC_CTYPE=en_US.UTF-8
Michiel Roos
sumber
Untuk beberapa alasan, Anda mendapatkan jawaban yang saya cari ... sudah seperti 2 jam. Terima kasih!
Kiwad