Python 错误:[Errno 1]不允许操作:'/usr/bin/pyobfuscate';马科斯山脉

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,但我得到了完全相同的错误

我正在尝试使用以下命令在我的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
,但我得到了完全相同的错误。

一般来说:在当前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']