easy_install是Python编程语言中的一个包管理工具,用于安装、升级和管理Python软件包。它可以自动处理软件包的依赖关系,并将其安装到正确的位置。 文件权限是操作系统中用于控制对文件或目录的访问权限的设置。它确定了谁可以读取、写入或执行特定文件或目录。文件权限通常使用数字表示,例如,4表示读取权限,2表示写入权限,1表示执行权限。使用这些数字的组合,可以设置不同的权限级别。

59 浏览
0 Comments

easy_install是Python编程语言中的一个包管理工具,用于安装、升级和管理Python软件包。它可以自动处理软件包的依赖关系,并将其安装到正确的位置。 文件权限是操作系统中用于控制对文件或目录的访问权限的设置。它确定了谁可以读取、写入或执行特定文件或目录。文件权限通常使用数字表示,例如,4表示读取权限,2表示写入权限,1表示执行权限。使用这些数字的组合,可以设置不同的权限级别。

首先,我目前使用的是OSX 10.9.1和Python 2.7。\n我想要使用easy_install来安装Python包(在这个例子中是pip)。首先,我尝试:\neasy_install pip\n然后我遇到一个错误,说我没有写入site-packages目录的权限。没问题:\nsudo easy_install pip\n一切都下载得很好。下面是我安装pip后的Bash会话:\n

$ pip
-bash: /usr/local/bin/pip: Permission denied
$ cd /usr/local/bin/pip
$ ls -l
...
-rwx------  1 root   admin       275 Jan 10 11:05 pip
...
$ chmod 754 pip
chmod: Unable to change file mode on pip: Operation not permitted
$ sudo chmod 754 pip
$ pip
Traceback (most recent call last):
  File "./pip", line 5, in 
    from pkg_resources import load_entry_point
  File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 3007, in 
  File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 728, in require
    requirements specified when this environment was created, or False
  File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 626, in resolve
pkg_resources.DistributionNotFound: pip==1.5

\n好吧,有些权限可能还是混乱的。当我查看/Library/Python/2.7/site-packages/时,Finder显示的是这样的:\n\"No\n当查看同一目录时,ls -l返回的是:\n

...
drwx------   4 root  wheel     136 Jan 10 11:24 pip-1.5-py2.7.egg
...

\n显然我仍然没有使用pip的权限,因为我对归档文件没有执行权限。怎么样:\n

$ chmod 754 pip-1.5-py2.7.egg
chmod: Unable to change file mode on pip-1.5-py2.7.egg/: Operation not permitted
$ sudo chmod 754 pip-1.5-py2.7.egg
$ pip
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 9, in 
    load_entry_point('pip==1.5', 'console_scripts', 'pip')()
  File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 378, in load_entry_point
    def get_resource_stream(manager, resource_name):
  File "build/bdist.macosx-10.8-intel/egg/pkg_resources.py", line 2565, in    load_entry_point
    section = line[1:-1].strip()
ImportError: Entry point ('console_scripts', 'pip') not found

\n我的假设是,所有的权限都乱了,因为我使用了sudo,现在我只是在追逐权限。但这可能是错误的。我记得在升级到OSX 10.9之前从来没有遇到过这个问题。\n我的问题是:Unix系统是否总是这样处理sudo,即使我是电脑的管理员?有没有办法永久修正这个问题,以便我真正有权限运行安装的包?你认为我的系统上是否有设置不正确的地方?

0
0 Comments

问题的出现原因是由于使用了sudo命令,导致所有的文件权限都出错了。解决方法包括:改变使用sudo命令的习惯,避免使用sudo命令来“修复”问题;不要将所有东西都放在操作系统的Python版本中,建议清空/usr/local目录;使用brew安装python,获取一个干净的Python环境;确保使用的是brew安装在/usr/local中的pip,如果不是,需要调整~/.bashrc启动文件;使用brew安装virtualenv和virtualenvwrapper,确保每个项目只会影响自己,同时在~/.bashrc中添加export PIP_REQUIRE_VIRTUALENV=true以防止未来的错误;使用virtualenv来了解项目的真正依赖关系,避免不同项目的依赖冲突和由于滥用sudo命令而导致的问题。

0