如何使用/usr/local/lib/python2.7/dist-packages
在标准python环境即 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
答案 0 :(得分:25)
您可能会按照here
的说明设置错误的umask
从上次修改开始,我猜您umask
设置为027
。尝试做
sudo pip uninstall loremipsum
umask 022
sudo pip install loremipsum
答案 1 :(得分:10)
对于 Ubuntu 18.04 ,在我的情况下,使用命令sudo pip install stuff-name
不足以将模块安装在全局路径中(它一直在查看本地用户python路径)。
我的解决方案
我已更改为 root 用户,并将目录更改为其主目录。然后pip
的安装按预期工作,并在全局路径中安装模块。
详细地,我在 nowox 答案之后进行了较小的更改(sudo su
,更改为 root 用户),另请参阅关于{{1 }}:
umask 022
注意:sudo su
cd ~
umask 022
pip install what-you-like
命令/行可以是可选的...,通常umask已经是022,这是默认值。
答案 2 :(得分:5)
调用pip时使用--target
选项
pip install --target=/your/pyinstalldir loremipsum
目标目录必须是您的用户可写的位置。
请注意,这要求常规用户环境在sys.path
中包含目标目录。实现这一目标的一种可能方法是使用PYTHONPATH
env var:
# /etc/profile.d/myenvvars.sh
export PYTHONPATH=/your/pyinstalldir
答案 3 :(得分:4)
对于Ubuntu 18.04,请尝试sudo -H pip install loremipsum