В под управлением Ubuntu 14.04 и updater говорится, что все программное обеспечение актуально. Попытались перезагрузить.
Я готовлюсь к классу, который использует Python. Я установил его, и это хорошо работает. Однако у меня теперь есть эта проблема: Когда я ввожу неизвестную команду в удар, я получаю ошибку Python:
cliff@Climate:~$ UnknownProgram
Fatal Python error: Py_Initialize: Unable to get the locale encoding
File "/usr/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Aborted
cliff@Climate:~$ env | grep -i python
PYTHONPATH=/usr/lib/pymodules/python2.7:/usr/lib/python2.7
cliff@Climate:~$ which UnknownProgram
cliff@Climate:~$ which python
/usr/bin/python
cliff@Climate:~$ python --version
Python 2.7.6
cliff@Climate:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Я думаю, что pycharm также установил некоторый python3 на поле.
Я нашел, что/usr/lib/command-not-found включает хижину для python3. Я предполагаю, что это так или иначе берет несправедливость файл Py_Initialize. Как я исправляю это, так как мне нужен python 2.7 для класса?
Удаление PYTHONPATH экспорта от моего .bashrc решило проблему. Я теперь получаю нормальную обработку, если я ввожу на неправильное название команды. Я должен буду провести еще некоторое исследование, чтобы быть уверенным, что мой код python 2.7 берет корректные модули без того дополнительного параметра среды.
При использовании Python постарайтесь не помещать определенную для Python конфигурацию в ENV оболочки непосредственно. Вместо этого определите пути Python, переменные, и т.д. в сценариях Python, которые Вы пишете и даже тогда, только при необходимости.
причина этого состоит в том, что это позволяет каждому сценарию Python или программе называть Python ее собственным путем, не вмешиваясь в или обычно запрещая функциональность других сценариев Python и программ. В данном случае Вы определяли путь Python 2.7 для своей оболочки удара для использования универсально и при этом, повредили любые программы, которые полагаются на различную переменную среды Python (Python 3 в этом случае) все же не определяют те переменные явно.
Определение, какая версия Python использовать в начале сценария Python будет implictly устанавливать корректные пути по умолчанию для программы для работы, аннулируя потребность в явных переменных среды Python, таких как те, Вы установили в своем .bashrcexport файле. Можно сделать, это путем создания первой строки в Python пишет сценарий чего-то вроде этого:
#!/usr/bin/python2
С другой стороны, можно определить Python 3, который будет использоваться при выполнении сценария с thise строкой как первая строка в сценарии:
#!/usr/bin/python3
можно взять это шаг вперед путем определения точных версий Python если Вы, так требуйте, Т.е.:
#!/usr/bin/python2.7
или
#!/usr/bin/python3.4
Я подтверждаю.
Это происходит в системе с хорошо работающей анакондой при обновлении от человечности 17.4 до 17,10, где система теперь использует Python3.6. сброс PYTHONHOME заставил его работать непосредственно.
Таким образом, я удалил из своего .bashrc это дополнение во время установки анаконды:
export PATH=/opt/anaconda/bin:$PATH
export PYTHONHOME=/opt/anaconda/
Около, Python по умолчанию все еще python2, не анаконда distrib, но я могу все еще переключиться на свой ENV Python с python2.7,
$ source activate myenv
или выполненный /opt/anaconda/python2
, таким образом, это хорошо работает, это только, который является теперь python3, Эта система зависят, PYTHONHOME не устойчив к номинальным огибающим изменениям, который плох, по-моему, и не зарегистрированный об установке анаконды, хотя обходное решение легко. nge