pip: текущий (Python 3.6+) эквивалент `` 1001 * -g install some-global-package`? - PullRequest
0 голосов
/ 02 марта 2020

env: Python 3.6, на macos Мохаве. system python - это 2.7, Apple, которую мы можем полностью игнорировать

(я не уверен, насколько здесь важны макросы)

Как установить то, что не имеет ничего общего с делать с любым конкретным проектом, но который я просто хочу на уровне рабочей станции / пользователя. Например, black. Либо для моего пользователя, либо с sudo на системном уровне для Python 3.6.

Итак: не в виртуальности .

Вот небольшой обзор того, что я искал / пробовал:

Справка Пипса:

поиск global в pip install -h | less не показывает ничего очень многообещающего.

давайте попробуем --user переключатель в пределах venv

(venv)$pip install black --user
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.?

деактивировать virtualenv, запустить против -m pip

$ python3.6 -m pip install black
/opt/local/bin/python3.6: No module named pip ?

Могу ли я найти бинарные файлы для работы с пипсами?

$which python3.6
/opt/local/bin/python3.6   #  macports'

не вижу системных пипсов:

$ mdfind -name pip | egrep /bin/ | egrep -v $USER
$ which pip3.6
$ which pip3
$ which pip
which pip36

Поиск по macports не отображается любые pip3s для установки:

port search pip | egrep ^pip
pip_select @0.1_1 (python)
pipebench @0.40 (benchmarks, sysutils)
pipenv @2018.11.26 (python, devel)
pipsi @20180610_1 (python, sysutils)
pip script installer
pipx @0.15.1.3 (python, sysutils)
pipe to browser utility

Но это можно сделать - вот что есть в моем глобальном site-packages:

Например, материал meld происходит из-за неудачной установки meld с sudo, конечно.

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
$ ls
total 40
-rw-r--r--    1 root  wheel   806 Oct  5  2018 pygobject-3.28.3-py3.6.egg-info
...
-rw-r--r--    1 root  wheel   798 Feb 28 10:58 meld-3.18.1-py3.6.egg-info  ?
drwxr-xr-x   34 root  wheel  1088 Feb 28 10:58 meld ?

1 Ответ

0 голосов
/ 06 мая 2020

Работает.

Определите python3, который вы хотите использовать.

Я знаю, что я в основном на 3,6, поэтому ...

which python3.6

вывод:

/opt/local/bin/python3.6

Следуйте инструкциям pypa для установки pip самостоятельно

скачать скрипт установки

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

запустите его

python3.6 get-pip.py

Есть несколько слов о том, что он не может записать в site-packages в системных каталогах, поэтому записал их в режиме пользователя.

В моем случае это означает, что ~/Library/Python/3.6

tree -d -L 3 ~/Library/Python/3.6/

~/Library/Python/3.6/
├── bin
└── lib
    └── python
        └── site-packages

добавить корзину в $ PATH

Он также сообщает, что предупреждает вас о том, что ~/Library/Python/3.6/bin не находится на пути. Так что добавьте это.

export PATH="$PATH:~/Library/Python/3.6/bin"

Теперь у вас есть рабочий пункт, который указывает на ваш python3 .6, без виртуальности.

which pip

~/Library/Python/3.6/bin/pip

Говоря о пункт , угадайте, как пункт знает, с каким Python он связан?

head -2 $(which pip)

output: обратите внимание на bash shebang

#!/opt/local/bin/python3.6
# -*- coding: utf-8 -*-

использование

Деактивируйте вену, если вы находитесь в одной

deactivate

Pip install

pip install pre_commit
pip install black

Возможно, вам понадобится включить глобальные пакеты, с помощью --system-site-packages, при создании нового virtualenv

python3.6 -m venv venv --system-site-packages

Причины для этого?

Ну, например, black имеет хук предварительной фиксации, который для работы использует пакет Python ( pre-commit ). Отличный материал, но вам действительно нужны эти 2 пакета в каждом создаваемом вами virtualenv и нужны ли они как зависимости от pip freeze?

...