Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在linux上为所有使用pip的用户安装模块?_Python_Linux_Pip_Sudo - Fatal编程技术网

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

Python 如何在linux上为所有使用pip的用户安装模块?,python,linux,pip,sudo,Python,Linux,Pip,Sudo,如何使用pip在标准python环境中安装软件包,即/usr/local/lib/python2.7/dist软件包,并使此新软件包在不使用virtualenv的情况下可供所有用户使用 通过使用以下命令,软件包仅以root权限安装: $sudo pip安装loremipsum 下载/解包loremipsum 下载loremipsum-1.0.5.tar.gz 运行setup.py(路径:/tmp/pip\u build\u root/loremipsum/setup.py) 包裹loremips

如何使用
pip
在标准python环境中安装软件包,即
/usr/local/lib/python2.7/dist软件包
,并使此新软件包在不使用
virtualenv
的情况下可供所有用户使用

通过使用以下命令,软件包仅以root权限安装:

$sudo pip安装loremipsum
下载/解包loremipsum
下载loremipsum-1.0.5.tar.gz
运行setup.py(路径:/tmp/pip\u build\u root/loremipsum/setup.py)
包裹loremipsum的鸡蛋信息
安装收集的软件包:loremipsum
正在为loremipsum运行setup.py安装
已成功安装loremipsum
清理。。。
证明:

$python-c“导入loremipsum”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为loremipsum的模块
$sudo python-c“导入loremipsum”
$pip安装loremipsum
已满足要求(使用--upgrade升级):loremipsum in
/usr/local/lib/python2.7/dist-packages
清理。。。
$cowsay悲伤
_____

-----
\   ^__^
\(oo)\_______
(__)\       )\/\
||----w|
||     ||
请不要建议我使用
apt-get-install-python-…
。我想知道我的错误是什么,以及如何正确使用pip

$python--版本
Python 2.7.6
$pip--版本
来自/usr/lib/python2.7/dist-packages(python 2.7)的PIP1.5.4
$uname-a
Linux 3.19.0-32-generic#37~14.04.1-Ubuntu SMP ux86_64GNU/Linux
编辑

我想问题是因为
pip
不允许团队和每个人阅读已安装的内容:

$sudo pip卸载loremipsum
正在卸载loremipsum:
/usr/local/lib/python2.7/dist-packages/loremipsum-1.0.5.egg-info
/usr/local/lib/python2.7/dist-packages/loremipsum/\uuuuu-init\uuuuuuuuu.py
/usr/local/lib/python2.7/dist-packages/loremipsum/________.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
是否继续?Y
已成功卸载loremipsum
$sudo pip安装loremipsum
下载/解包loremipsum
下载loremipsum-1.0.5.tar.gz
运行setup.py(路径:/tmp/pip\u build\u root/loremipsum/setup.py)
包裹loremipsum的鸡蛋信息
安装收集的软件包:loremipsum
正在为loremipsum运行setup.py安装
已成功安装loremipsum
清理。。。
$sudo ls-al/usr/local/lib/python2.7/dist-packages/loremipsum
总数60
drwxr-s---3根员工4096年4月27日22:06。
drwxrwsr-x 18根员工4096年4月27日22:06。。
drwxr-s---2根员工4096 Apr 27 22:06默认值
-rw-r-----1根员工16182年4月27日22:06 generator.py
-rw-r-----1根员工16323 Apr 27 22:06 generator.pyc
-rw-r-----1根员工6130 4月27日22:06
-rw-r-----1根员工6869 4月27日22:06
调用pip时使用
--target
选项

pip install --target=/your/pyinstalldir loremipsum
目标目录必须是用户可写的位置

请注意,这要求常规用户环境的目标目录位于
sys.path
中。实现这一点的一种可能方法是使用
PYTHONPATH
env变量:

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

如前所述,您可能设置了错误的
umask

根据上次编辑,我猜您的
umask
设置为
027
。尽力

sudo pip uninstall loremipsum
umask 022
sudo pip install loremipsum

对于ubuntu18.04,在我的例子中,使用命令
sudopip install stuff name
不足以在全局路径中安装模块(它一直在查看本地用户python路径)

我的解决方案

我已更改为root用户,并将目录更改为其主目录。然后,
pip
安装按预期工作,并在全局路径中安装模块

详细地说,我按照Novox的回答做了一个小改动(
sudo su
,对root用户的改动),另请参见关于
umask 022
的最后说明:

sudo su
cd ~
umask 022
pip install what-you-like

注意:
umask022
命令/行可以是可选的…,通常umask已经是022了,这是默认值。

对于Ubuntu 18.04,请尝试
sudo-H pip安装loremipsum

-H
--set home
的缩写形式:

-H, --set-home
     Request that the security policy set the HOME environment variable
     to the home directory specified by the target user's password 
     database entry.  Depending on the policy, this may be the default
     behavior.

换句话说,这将执行
sudo
命令,并将HOME环境变量设置为root的HOME。

python--version和
pip--version
的输出是什么?是的,但是,我不想将其与操作系统分开…@wRAR-pip和virtualenv用于完全不同的任务。的确,许多人将pip和virtualenv结合使用,但我认为说这是正确的用法是不正确的。@wim,系统包会干扰*Nix系统上的pip安装,所以是的,在Linux、Mac OS X和其他系统(特别是Ubuntu)上正确使用pip是正确的在虚拟电视里,不,不是。例如,如果您在docker容器中部署应用程序,则希望直接安装到系统中。您不需要使用virtualenv,因为隔离是由cgroups提供的,并且您不必担心系统包的更改,因为您将容器部署为不可变的。这是在不使用virtualenv的情况下完全有效地使用pip。对于任何感兴趣的人来说,
umask
是一个设置文件/目录默认访问权限的命令。“看更多”让人感觉像黑客。这是官方途径吗?@robsch不,看看Jeremy的链接。用umask检查你的umask。我今天大部分时间都在试图弄清楚为什么Flask可以被Python导入到我的服务器上,除了WSGI试图导入它的时候。正因为如此。知道为什么
pip
会在