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

问题描述 投票:11回答:3

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

我究竟做错了什么?

python binary easy-install python-c-extension
3个回答
38
投票

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

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

这是许多情况之一,在这种情况下,您提供的命令行参数可能会被同名的文件或文件夹无意中隐藏。另一个例子是make:如果你运行make test试图制作你的测试目标并且你碰巧有一个名为test的文件夹,那么make就不会做你想要的。在这种情况下的解决方案是指示Phony Targets


8
投票

easy_install希望找到源代码分发或者一个鸡蛋。最好将源代码分发(sdist)上传到PyPI(或者你正在使用的任何分发服务器),如果你的python软件包包含C扩展,那么只上传egg,然后只用于Windows egg(请参阅我对Can I create a single egg for multiple versions of python?的回答)。

没有额外配置的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命令。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.