python setup.py sdist错误:不允许操作

rla*_*yte 17 python unix ubuntu virtualbox distutils

我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)

我试过用sudo运行命令,但它会产生同样的错误.

这也会产生同样的错误:

ln foo bar
Run Code Online (Sandbox Code Playgroud)

我正在使用vbox运行ubuntu的虚拟实例,这可能是问题的来源.在创建源代码分发时,是否有使用硬链接的方法?

系统信息:

Ubuntu服务器11.04; VirtualBox 4.14; osx 10.6.6; python 2.7.1;

Leo*_*o.Z 17

同样的问题.我使用的是vagrant,我的主机操作系统是Windows,而Gust OS是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
Run Code Online (Sandbox Code Playgroud)


小智 16

我遇到了同样的问题.通过将python源从虚拟盒共享文件夹移动到我的debian主文件夹,我能够使它工作.sdist上没有错误了.

我希望它有所帮助.

  • 这对我有用 - 我想你无法在某些已安装的卷上创建硬链接. (3认同)

Kur*_*man 9

从你的问题不清楚哪一步失败了.可能是错误之前的硬链接.您可以尝试strace以查看哪些系统调用失败.这应该至少可以更好地描述问题.

这个python bug报告看起来好像他们不会在distutils2之前解决这个问题.有人提供了可能对您有用的补丁.您也可以通过NFS挂载目录并在那里构建.我相信NFS允许硬链接.


Cra*_*zyk 8

看起来这是在Python 2.7.9版本中修复的 - https://hg.python.org/cpython/raw-file/v2.7.9/Misc/NEWS

Issue #8876: distutils now falls back to copying files when hard linking doesn't work. This allows use with special filesystems such as VirtualBox shared folders