2017-01-17 4 views
0

Я установил пипс на моем компьютере (Mac), и я попытался это:Мой PYTHONPATH окр не похоже на работу

$export PYTHONPATH=/usr/local/lib/python2.7/site-packages/pip 
$python pip freeze list 
/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'pip': [Errno 2] No such file or directory 

Это не работает, но если я указываю этот полный путь в python, он работает:

$python /usr/local/lib/python2.7/site-packages/pip freeze list 
ant==0.1.0 
appnope==0.1.0 
astroid==1.4.8 
backports-abc==0.5 
........ 

Почему это?

+1

Почему вы меняете PYTHONPATH? –

+0

PYTHONPATH влияет на то, как интерпретатор Python будет разрешать ссылки для операторов 'import'. Это не влияет на то, какой интерпретатор Python будет задействован, и как оболочка будет разрешать ссылки на исполняемые файлы (например, ваш скрипт 'pip'). Я получаю, что семантика «import» Python значительно сложнее, чем большинство людей понимают даже после многих лет опыта Python. Вот несколько советов: http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html –

ответ

1

Запуск pip freeze непосредственно должно быть достаточно. Вам не нужно запускать его через python pip или вообще отключить $PYTHONPATH.

Ошибка в этом первом фрагменте связана с тем, как вы вызываете python. Ваша команда интерпретируется как python <script-filename> [script-arguments ...]. Имя файла, которое вы передаете, равно pip, поэтому python ищет файл с именем «pip» в текущем каталоге. Этот файл не существует, поэтому python падает с ошибкой «файл не найден».

python <full-path-to-script> работает, потому что ... ну, а почему бы и нет? Python находит скрипт и выполняет его.

1

Как указано в комментариях, вы не хотите обходиться с PYTHONPATH. Если вы хотите иметь разные версии python на одном компьютере или на установках python с разными установленными пакетами (или модулями), то вам нужно использовать virtualenv

Создайте новый виртуальный рабочий стол.

virtualenv /usr/local/custom-python/ 

, а затем, когда вы хотите использовать его или установить пакеты в него, просто сделать

source /usr/local/custom-python/bin/activate 
1

пытаются использовать: $export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages Во-первых, ваш код может покрыть Orignal PYTHONPATH который устаревшее. Во-вторых, не включайте pip в путь python, потому что pip - это пакет, который должен быть включен.

python /your/path/to/pip этот пип - это папка, в которой есть __init__.py. Таким образом, python может его прочитать. Но если вы напрямую определяете PYTHONPATH в папке pip, python не найдет это __init__.py для представления pip (см. Документ о пакете импорта python)

Кроме того, я думаю, вы можете включить двоичный пип (может находиться/usr/bin) в на ваш путь, чтобы вы могли называть его напрямую с помощью $ pip command

Смежные вопросы