当前位置: 首页>>技术教程>>正文


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

我正在使用vbox运行ubuntu的虚拟实例,这可能是问题所在。创建源发行版时,有没有使用硬链接的方法?

系统信息:

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

最佳方法

从您的问题尚不清楚什么步骤失败了。可能是错误发生之前的硬链接。您可以尝试使用strace查看哪些系统调用失败。至少应该可以更好地了解问题。

This python bug report似乎直到distutils2都不会解决此问题。有人确实提供了可能对您有用的补丁。您也许还可以通过NFS挂载目录并在那里建立目录。我相信NFS允许硬链接。

次佳方法

同样的问题。我正在使用流浪汉,我的主机操作系统是Windows,而Gust操作系统是Ubuntu。我不是vim爱好者,所以@simo的答案对我没有多大帮助,因为我确实依赖虚拟盒共享文件夹将Sublime编辑器所做的更改同步到Ubuntu虚拟机。

感谢Fabian Kochem,他找到了一种快速而肮脏的解决方法:post

# 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

第三种方法

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

希望对您有所帮助。

第四种方法

看起来这在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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8301.html,未经允许,请勿转载。