所以python安装可能没问题。或者它已经在这里了(我使用的是 xubuntu 12.10)。
但是我今天尝试使用 pip 安装 networkx:
pip install networkx
Run Code Online (Sandbox Code Playgroud)
然后说我没有权限。所以我 sudo 上面的命令。安装没有错误。
现在我不能在没有 root 的情况下导入 networkx。我相当有信心你不应该一直都是 root 来运行 python 脚本。这听起来真的很危险。
easy_install 是这样说的:
easy_install networkx
Run Code Online (Sandbox Code Playgroud)
错误:无法在安装目录中创建或删除文件
尝试添加或删除安装目录中的文件时出现以下错误:
Run Code Online (Sandbox Code Playgroud)[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-13206.pth'您指定的安装目录(通过 --install-dir、--prefix 或 distutils 默认设置)是:
Run Code Online (Sandbox Code Playgroud)/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
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用):文件“t1.py”,第 3 行,在 import networkx as nx ImportError: No module named networkx
sudo python t1.py
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
注意:当非 sudo pip 仍然不起作用时,我将其改回 775。
sean@potatocake:~$groups
sean adm cdrom sudo dip plugdev lpadmin sambashare
sean@potatocake:~$sudo useradd -G staff sean
useradd: user 'sean' already exists
Run Code Online (Sandbox Code Playgroud)
小智 0
我绝对不是这方面的专家,但这是我的想法。
最好以 root 身份进行安装,这样除了 root 和 sudo 之外,没有人可以修改您的文件和配置。所以我猜你的安装没问题。如果您想安装新软件包,您应该是 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
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
19372 次 |
| 最近记录: |