Как установить модуль для всех пользователей с pip на linux?
Как установить пакет в стандартную среду python то есть /usr/local/lib/python2.7/dist-packages
используя pip
и сделать этот новый пакет доступен для всех пользователей без использования virtualenv
?
используя следующее, пакет устанавливается только с правами root:
$ sudo pip install loremipsum
Downloading/unpacking loremipsum
Downloading loremipsum-1.0.5.tar.gz
Running setup.py (path:/tmp/pip_build_root/loremipsum/setup.py)
egg_info for package loremipsum
Installing collected packages: loremipsum
Running setup.py install for loremipsum
Successfully installed loremipsum
Cleaning up...
доказательство:
$ python -c 'import loremipsum'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named loremipsum
$ sudo python -c 'import loremipsum'
$ pip install loremipsum
Requirement already satisfied (use --upgrade to upgrade): loremipsum in
/usr/local/lib/python2.7/dist-packages
Cleaning up...
$ cowsay sad
_____
< sad >
-----
^__^
(oo)_______
(__) )/
||----w |
|| ||
пожалуйста, не советуйте мне использовать apt-get install python-...
вместо. Я хотел бы знать, в чем моя ошибка и как использовать pip правильно.
$ python --version
Python 2.7.6
$ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
$ uname -a
Linux _ 3.19.0-32-generic #37~14.04.1-Ubuntu SMP _ x86_64 GNU/Linux
редактировать
Я думаю, проблема в том, что pip
не позволяет группе и всем читать установленные материалы:
$ sudo pip uninstall loremipsum
Uninstalling loremipsum:
/usr/local/lib/python2.7/dist-packages/loremipsum-1.0.5.egg-info
/usr/local/lib/python2.7/dist-packages/loremipsum/__init__.py
/usr/local/lib/python2.7/dist-packages/loremipsum/__init__.pyc
/usr/local/lib/python2.7/dist-packages/loremipsum/default/dictionary.txt
/usr/local/lib/python2.7/dist-packages/loremipsum/default/sample.txt
/usr/local/lib/python2.7/dist-packages/loremipsum/generator.py
/usr/local/lib/python2.7/dist-packages/loremipsum/generator.pyc
Proceed (y/n)? y
Successfully uninstalled loremipsum
$ sudo pip install loremipsum
Downloading/unpacking loremipsum
Downloading loremipsum-1.0.5.tar.gz
Running setup.py (path:/tmp/pip_build_root/loremipsum/setup.py) egg_info for package loremipsum
Installing collected packages: loremipsum
Running setup.py install for loremipsum
Successfully installed loremipsum
Cleaning up...
$ sudo ls -al /usr/local/lib/python2.7/dist-packages/loremipsum
total 60
drwxr-s--- 3 root staff 4096 Apr 27 22:06 .
drwxrwsr-x 18 root staff 4096 Apr 27 22:06 ..
drwxr-s--- 2 root staff 4096 Apr 27 22:06 default
-rw-r----- 1 root staff 16182 Apr 27 22:06 generator.py
-rw-r----- 1 root staff 16323 Apr 27 22:06 generator.pyc
-rw-r----- 1 root staff 6130 Apr 27 22:06 __init__.py
-rw-r----- 1 root staff 6869 Apr 27 22:06 __init__.pyc
2 ответов
вы можете ошибиться umask
установить как описано здесь
из вашего последнего редактирования, я думаю, что вы umask
установлено значение 027
. Попробуйте сделать
sudo pip uninstall loremipsum
umask 022
sudo pip install loremipsum
использовать --target
опция при вызове pip
pip install --target=/your/pyinstalldir loremipsum
целевой каталог должен быть местом для записи.
обратите внимание, что каждый пользователь должен правильно настроить среду, чтобы целевой каталог был виден в пути python.
один из способов добиться этого-добавить этот каталог к переменной path в масштабах всей системы. Например, создайте такой файл
# /etc/profile.d/myenvvars.sh
export PYTHONPATH=/your/pyinstalldir