我刚刚学习为我的项目编写setup.py
文件的艺术。我看到有很多谈论setuptools
,这应该是优于distutils。有一件事,但我不明白,我没有看到它在我读过的任何教程中解决:如果setuptools没有安装?我知道这不是标准库的一部分,所以你怎么能假设想安装你的程序的人将安装它?如果setuptools未安装,该怎么办?
回答
您不能假定它已安装。有办法,你可以回退distutils(但为什么有setuptools首先),或者你可以在setup.py中安装setuptools(但我认为这是邪恶的)。
只有在需要的时候才使用setuptools。
当涉及到setuptools vs distrubute时,它们是兼容的,而选择一个则主要取决于用户。 setup.py是相同的。
你可以从这里
http://pypi.python.org/pypi/setuptools
下载Windows EXE安装程序和一个Linux RPM然后,一旦你有setuptools的到位,你可以使用easy_install
命令完成下载并安装新的软件包。由于easy_install也会自动下载和安装依赖项,因此您可能需要在实际使用之前设置virtualenv。这样,您可以决定是否要将一堆软件包安装到系统的默认Python安装中。
是的,这意味着你的用户必须安装setuptools才能使用它。当然,你可以使用setuptools安装程序,重命名它们,并将它们打包成像NSIS一样,并将其分发给用户。事实是,你必须安装一些东西,所以如果你不想把你的应用程序放到安装程序中,你可以打包setuptools。
所以我对我的用户说:“要安装我的程序,你必须安装setuptools”? – 2009-11-03 10:42:09
问题不在于“如何安装setuptools”,而是“用户没有安装setuptools”。 – 2009-11-03 10:42:43
如果用户没有它,唯一可以做的就是让他们下载EXE或RPM并安装它。或者分发setuptools而不是您的应用程序。编辑回答说这个。 – 2009-11-03 14:17:12
在我为python安装的大多数图书馆中,警告apears“您必须安装setuptools”。你也可以这样做,我想,你可以添加一个链接,以便用户不必在网上搜索它。
+1:如何在自述文件中包含“使用setuptools”一词? – 2009-11-03 12:55:57
我认为这是一样的。无论如何,当没有安装setuptools时会引发异常,因此您必须处理它。 – TiPoK 2009-11-03 13:43:52
使用setuptools发布软件包的标准方式包括一个ez_setup.py
脚本,它将自动下载并安装setuptools本身 - 在Windows上,我相信它实际上会安装easy_install
的可执行文件。你可以从标准的setuptools/easy_install发行版中获得。
我会说这取决于你正在寻找什么样的用户。
如果他们只是用户而不是Python程序员,或者他们是基本的程序员,那么使用setuptools可能会有点太多。对于那些distutils是完美的。
对于客户,我肯定会坚持distutils。
对于更多发烧友程序员来说,setuptools会很好。
不知何故,它也取决于你想如何分配更新,以及多久。例如,用户是否有权访问互联网,而无需公司设置恶意代理来阻止setuptools? - 我们有一个,这是一个额外的步骤来配置并使其在每个工作站上都能正常工作。
我已经使用setuptools编译了许多我写入windows EXE的python脚本。但是,我一直认为(从经验中)运行编译的EXE的计算机不需要安装设置工具。
希望帮助
- 1. 期待列表[未来],如果未来失败,该怎么办?
- 2. 如果_POSIX_VDISABLE值为-1,该怎么办?
- 3. 如果collections.defaultdict不可用,该怎么办?
- 4. 如果抛出IOException,我该怎么办?
- 5. 如果google.load失败,该怎么办?
- 6. 如果mysql_query()失败,该怎么办?
- 7. 如何安装setuptools?
- 8. 如果函数的参数未定义,该怎么办? (PHP)
- 9. 如果LocationListener.onLocationChanged未被调用,该怎么办?
- 10. 如果目标网址未返回,该怎么办
- 11. 如果favicon未命名为favicon.ico,该怎么办?
- 12. 如果payment_status在PapPal中未完成,我该怎么办?
- 13. 应用内结算 - 未安装Play商店应用时该怎么办?
- 14. 需要Google Play服务,但Google Play(市场)未安装。该怎么办?
- 15. android:setAdapter()未解决。该怎么办?
- 16. 未找到Java xerces DocumentBuilderFactoryimpl - 该怎么办?
- 17. 钛认为我有3.1.2,但我安装了3.4.1。该怎么办?
- 18. 点击升级安装错误的Django版本:该怎么办?
- 19. 无法安装@ angular/cli - 我该怎么办?
- 20. 我该怎么办?
- 21. NullPointerException - 该怎么办?
- 22. Python pip安装不工作怎么办?
- 23. 如果未安装postgres,我该如何安装DBD :: Pg?
- 24. 如果call_user_func应该返回false,该怎么办?
- 25. 安装setuptools后Kivy Buildozer - “No module named setuptools”
- 26. GoogleScraper安装错误 - setuptools必须安装
- 27. NSUnknownKeyException查看...该怎么办?
- 28. 我该怎么办在PHP
- 29. 我该怎么办日期
- 30. GWT JDBC我该怎么办?
对于它的价值,有些人都在谈论移动到[分配] [1]从setuptools的... [1]:http://pypi.python.org/ pypi /分发 – Kylotan 2009-11-03 10:56:06
...似乎标记在评论中的工作方式不同。 ;) – Kylotan 2009-11-03 10:56:37
没有魔法弹。为了用setuptools安装你的应用程序,某个地方的某个人不得不引导setuptools进入系统,而不使用easy_install。这可能是用户,它可能是发行人,或者它可能是你,用你的应用程序内置setuptools来构建你的安装程序。 – 2009-11-03 14:19:14