Python 错误:[Errno 1]不允许操作:'/usr/bin/pyobfuscate';马科斯山脉
我正在尝试使用以下命令在我的macOS Sierra上安装pyobfuscate:python setup.py install,但出现以下错误:Python 错误:[Errno 1]不允许操作:'/usr/bin/pyobfuscate';马科斯山脉,python,macos,Python,Macos,我正在尝试使用以下命令在我的macOS Sierra上安装pyobfuscate:python setup.py install,但出现以下错误: running install running build running install_data copying pyobfuscate -> /usr/bin error: [Errno 1] Operation not permitted: '/usr/bin/pyobfuscate' 我也尝试过使用sudo,但我得到了完全相同的错误
running install
running build
running install_data
copying pyobfuscate -> /usr/bin
error: [Errno 1] Operation not permitted: '/usr/bin/pyobfuscate'
我也尝试过使用sudo
,但我得到了完全相同的错误。一般来说:在当前MacOS上避免/usr/bin
(它是只读的)
/usr/bin
在新版本的MacOS上不可写,即使是作为root用户,除非系统完整性保护已禁用。考虑:
sudo python setup.py install --prefix=/usr/local
另一个根本不需要sudo
的选项是使用virtualenv:
virtualenv ~/pyobfuscate.venv ## create a virtualenv
. ~/pyobfuscate.venv/bin/activate ## activate that virtualenv
python setup.py install ## install pyobfuscate in that virtualenv
…然后,~/在给定shell中运行pyobfuscate
之前,在该shell中激活pyobfuscate.venv/bin/activate
但pyobfuscate的
setup.py
需要先修复,然后才能执行此操作:
这就是说,pyobfuscate的当前版本将其setup.py
编写如下:
data_files=[('/usr/bin', ['pyobfuscate'])]
这是不合适的,应该是:
scripts=['pyobfuscate']
…它将跟随给定的前缀,无论是通过virtualenv还是通过--prefix=
参数。在setup.py内替换
data_files=[('/usr/bin', ['pyobfuscate'])]
与
您可能没有该目录的写入权限。你可以使用
sudo
来提升你的特权。@AChampion我也尝试过使用sudo
,但同样的错误简单的答案是在你的主目录中设置一个virtualenv,这样/usr/bin
就不会被修改了。请看--自从El Capitan,除非禁用系统完整性保护,否则/usr/bin
是完全只读的。也就是说,如果所有setup.py安装
正在复制此二进制文件,你考虑过把它复制到别的地方吗?比如/usr/local/bin
?我试过sudo
,但没有成功,因为它试图用/usr/bin/pyobfuscate
而不是/usr/local/bin/pyobfuscate
啊。阅读setup.py
,我明白了为什么它不起作用——答案被适当地编辑了。
scripts=['pyobfuscate']