easy_install是Python编程语言中的一个包管理工具,用于安装、升级和管理Python软件包。它可以自动处理软件包的依赖关系,并将其安装到正确的位置。 文件权限是操作系统中用于控制对文件或目录的访问权限的设置。它确定了谁可以读取、写入或执行特定文件或目录。文件权限通常使用数字表示,例如,4表示读取权限,2表示写入权限,1表示执行权限。使用这些数字的组合,可以设置不同的权限级别。
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, infrom 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\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, inload_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
,即使我是电脑的管理员?有没有办法永久修正这个问题,以便我真正有权限运行安装的包?你认为我的系统上是否有设置不正确的地方?
问题的出现原因是由于使用了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命令而导致的问题。