如何以适当的权限安装 python?

如何以适当的权限安装 python?

因此 python 可能安装得很好。或者可能它已经在这里了(我使用的是 xubuntu 12.10)。

但是我今天尝试使用 pip 安装 networkx:

pip install networkx

然后说我没有权限。所以我执行了上面的命令。安装没有错误。

现在我无法在非 root 身份下导入 networkx。我相当确信您不必一直以 root 身份运行 python 脚本。这听起来真的很危险。

easy_install 是这样说的:

easy_install networkx

错误:无法在安装目录中创建或删除文件

尝试添加或删除安装目录中的文件时发生以下错误:

[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-13206.pth'

您指定的安装目录(通过 --install-dir、--prefix 或 distutils 默认设置)是:

/usr/local/lib/python2.7/dist-packages/

也许您的帐户没有此目录的写权限?如果安装目录是系统拥有的目录,您可能需要以管理员或“root”帐户身份登录。如果您没有此计算机的管理权限,您可能希望选择其他安装目录,最好是 PYTHONPATH 环境变量中列出的目录。

有关其他选项的信息,您可能希望查阅以下文档:

http://packages.python.org/distribute/easy_install.html

请对您的系统进行适当的更改并重试。

我还尝试安装到 ~/.networkx(我以非 root 身份创建的子文件夹),但出现相同的权限错误。我 chmod 777 /usr/local/lib/python2.7/dist-packages 并尝试安装,出现相同的权限错误。

pip uninstall 和 sudo easy_install 会导致与 pip install 相同的问题。

顺便说一下:

python t1.py

回溯(最近一次调用最后一次):文件“t1.py”,第 3 行,在 import networkx as nx ImportError:没有名为 networkx 的模块

sudo python t1.py

H:10......更多的东西表明它正在导入并且运行良好......

显然,我在安装 Python 或……其他任何地方时都只是个菜鸟。我不知道在哪里,它可能在任何地方。有人遇到过这种情况吗?或者有人知道发生了什么吗?我需要你的帮助。谢谢。

编辑:(有关 Radoo 的更多信息)

sean@potatocake:~$./sh.sh
User is not part of the group which has access to that directory.
/usr/local/lib/python2.7/dist-packages needs access.

sean@potatocake:~$ll /usr/local/lib/
total 12
drwxrwxr-x 3 root root  4096 Mar 28 19:00 perl
drwxrwsr-x 4 root staff 4096 Oct 18 04:07 python2.7
drwxrwsr-x 3 root staff 4096 Oct 18 04:05 python3.2

sean@potatocake:~$ll /usr/local/lib/python2.7/
total 8
drwxrwsr-x 32 root staff 4096 Mar 28 23:13 dist-packages
drwxrwsr-x  2 root staff 4096 Oct 18 04:07 site-packages

注意:当非 sudo pip 仍然不起作用时,我将其 chmod 重新改为 775。

sean@potatocake:~$groups
sean adm cdrom sudo dip plugdev lpadmin sambashare

sean@potatocake:~$sudo useradd -G staff sean
useradd: user 'sean' already exists

答案1

最好不要尝试覆盖系统的 Python 版本。该版本适用于系统。对系统的 Python 进行自定义可能会导致冲突,甚至使系统存在漏洞。此外,系统更新可能会恢复您的自定义。

最好使用你自己的 Python 版本,可以使用以下工具来实现虚拟环境或者pyenv

答案2

我当然不是这方面的专家,但这是我的想法。

最好以 root 身份进行安装,这样除了 root 和 sudoers 之外,没有人可以修改您的文件和配置。所以我想您的安装没有问题。如果您想安装新软件包,您应该是 root。

至于权限错误,您说您这样做了:chmod 777 /usr/local/lib/python2.7/dist-packages。好吧,这只会在最后提供对该目录的访问权限。您可能有一些父目录可能没有访问权限(执行权限),这可能会导致您的问题。

要检查当前用户在所有这些目录上的权限,您必须对每个目录执行如下操作(我想您可以找到更好的版本,但无论如何):

dir="<directory_path>"
user_groups=$(groups <user>)
dir_group=$(stat "$dir" | cut -d' ' -f6)

if ! [[ "$dir_group" =~ "\\b$user_groups\\b" ]]; then printf "User is not part of the group which has access to that directory.\n"; fi

dir_access=$(stat "$dir" | cut -d' ' -f3)
group_dir_exec_access=${dir_access:6:1}

if [ "$group_dir_exec_access" != "x" ]; then printf "This dir needs access.\n"; <add some sudo chmod stuff to give access to group> fi

我希望这有帮助。

答案3

我在安装时遇到了同样的问题建造者。我执行了以下命令,它对我有用。尝试:

  1. 将目录更改为Python2.7
  2. sudo chmod 777 dist-packages
  3. sudo chmod 777 etc
  4. 进而python2.7 setup.py install

它对我有用!

相关内容