Bash пытается запустить Python на неизвестной команде и сбоях в Py_Initialize

В под управлением 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/loc‌​al/games

Я думаю, что pycharm также установил некоторый python3 на поле.

Я нашел, что/usr/lib/command-not-found включает хижину для python3. Я предполагаю, что это так или иначе берет несправедливость файл Py_Initialize. Как я исправляю это, так как мне нужен python 2.7 для класса?

3
задан 3 September 2014 в 00:26

3 ответа

Удаление PYTHONPATH экспорта от моего .bashrc решило проблему. Я теперь получаю нормальную обработку, если я ввожу на неправильное название команды. Я должен буду провести еще некоторое исследование, чтобы быть уверенным, что мой код python 2.7 берет корректные модули без того дополнительного параметра среды.

2
ответ дан 18 November 2019 в 05:00

При использовании 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

0
ответ дан 18 November 2019 в 05:00

Я подтверждаю.

Это происходит в системе с хорошо работающей анакондой при обновлении от человечности 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

0
ответ дан 1 December 2019 в 17:05

Другие вопросы по тегам:

Похожие вопросы: