二进制上传后,easy_install因错误“无法找到设置脚本”而失败?

时间:2011-05-30 16:29:25

标签: python binary easy-install python-c-extension

使用python setup.py bdist upload上传我的Python C扩展的二进制分发版后,easy_install [my-package-name]失败“错误:无法在/ tmp / easy_install / package-name-etc-etc中找到设置脚本”

我做错了什么?

3 个答案:

答案 0 :(得分:38)

这可能与您的具体问题无关,但我提供此信息以防其他人有所帮助。

我在运行easy_install xyz时遇到了这个错误。问题是我在当前工作目录中有一个名为xyz的子目录,easy_install希望在该子目录中本地找到一个安装脚本,而不是去网上获取真实的{{1} }。重命名我的本地xyz目录暂时解决了问题。

这是许多情况中的一种情况,其中您提供的命令行参数可能会被同名的文件或文件夹无意中隐藏。另一个示例是xyz:如果您在尝试制作测试目标时运行make并且您碰巧有一个名为make test的文件夹,则test将无法执行您想要的操作。在这种情况下,解决方案是指出Phony Targets

答案 1 :(得分:8)

easy_install期望找到源分发或者鸡蛋。最好将源代码分发(sdist)上传到PyPI(或您正在使用的任何分发服务器),并且只有在您的python软件包包含C扩展名时才上传鸡蛋,然后仅用于Windows鸡蛋(请参阅我对{{{ 3}})。

bdist命令,无需额外配置,创建一个.tar.gz.zip存档,其中包含当前平台编译的python文件(以及编译的任何C扩展),无安装程序(所以不包括setup.py文件。它旨在手动打包您的站点包装位置和通过鸡蛋分发前的日期。如果您要解压缩它,您会注意到它甚至包含了tarball中site-packages目录的完整绝对路径!

您可以配置bdist以生成RPM或.deb文件,或简单的Windows安装程序,但这些文件再次旨在为与PyPI和easy_install无关的其他分发系统提供安装包。

因此,总而言之,在大多数情况下,最好上传一个sdist源代码分发,并让easy_install在安装时进行python编译(到一个鸡蛋)。

如果您确实要上传预编译的发行版(然后绑定到特定的Python版本及其编译的平台),请改用bdist_egg命令。

答案 2 :(得分:1)

有时你实际上并不打算简单地安装'目录',它会寻找一个setup.py文件。 简单来说,你可能正在做easy_install xyz/ 而你真正想做的是easy_install xyz