如何在Linux上使用pip为所有用户安装模块?

如何使用pip在标准的python环境下安装一个软件包,例如/usr/local/lib/python2.7/dist-packages并让所有的用户都可以使用这个新的软件包,而不使用virtualenv

通过使用以下内容,该软件包仅安装有根权限:

 $ 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... 

certificate:

 $ 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 | || || 

请不要build议我使用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 

你可能有一个错误的umask设置在这里讨论

从你上次的编辑,我想你的umask被设置为027 。 试着做

 sudo pip uninstall loremipsum umask 022 sudo pip install loremipsum 

调用pip时使用--target选项

 pip install --target=/your/pyinstalldir loremipsum 

目标目录必须是用户可写的位置。

请注意,每个用户都要正确设置环境,以便目标目录在python路径中可见。

实现这一目标的一种方法是将此目录附加到系统范围的路径变量。 例如,创建一个像这样的文件

 # /etc/profile.d/myenvvars.sh export PYTHONPATH=/your/pyinstalldir