python setup.py sdist 错误:操作不允许
我正在尝试创建一个Python源代码包,但在为文件创建硬链接时出现了问题。
$ python setup.py sdist
running sdist
running check
reading manifest template 'MANIFEST.in'
writing manifest file 'MANIFEST'
making hard links in foo-0.1...
hard linking README.txt -> foo-0.1
error: Operation not permitted
我试着用sudo命令来运行,但还是出现了同样的错误。
这个命令也产生了同样的错误:
ln foo bar
我在用VirtualBox运行一个Ubuntu的虚拟实例,这可能就是问题的来源。有没有办法在创建源代码分发时不使用硬链接?
系统信息:
Ubuntu服务器 11.04;
VirtualBox 4.14;
osx 10.6.6;
Python 2.7.1;
6 个回答
16
我也遇到了同样的问题。
我通过把Python源文件从虚拟机的共享文件夹移动到我的Debian主文件夹,成功解决了这个问题。现在在生成sdist的时候没有错误了。
希望这对你有帮助。
18
我也遇到了同样的问题。我在用vagrant,主机操作系统是Windows,而虚拟机里的操作系统是Ubuntu。我不是vim的粉丝,所以@simo的回答对我帮助不大,因为我真的很依赖虚拟盒子共享文件夹,把在sublime编辑器里做的更改同步到Ubuntu虚拟机。
感谢Fabian Kochem,他找到了一个快速但不太完美的解决办法:帖子
# if you are not using vagrant, just delete os.link directly,
# The hard link only saves a little disk space, so you should not care
if os.environ.get('USER','') == 'vagrant':
del os.link
9
从你的问题中不太清楚是哪个步骤出错了。可能是在出错之前的硬链接操作有问题。你可以试试用strace这个工具,看看哪个系统调用失败了。这样至少能更清楚地了解问题所在。
这个Python的错误报告看起来在distutils2之前是不会修复这个问题的。不过,有人提供了一个补丁,可能对你有帮助。你也可以尝试通过NFS挂载一个目录,然后在那儿进行构建。我记得NFS是支持硬链接的。