我最近开始学习Python,对包装的分发和安装方式感到有些困惑。

我了解安装包裹的官方方法是 dist: :您下载源粉末,打开包装并运行: python setup.py install, ,然后该模块将自动安装自身

我也知道 setuptools 随之而来的 easy_install 助手脚本。它用 为了分发以及我所理解的内容,建立在distiutil的顶部,并执行与上述相同的事情,此外,它还需要任何所需的依赖项,所有这些都从PYPI中获取

然后也有 pip, ,我仍然不确定它与其他人有何不同。

最后,当我在Windows机器上时,许多软件包还通过 Windows安装程序, ,尤其是需要编译C/Fortran代码的内容,否则这将是一场噩梦,可以在Windows上手动编译(假设您拥有MSVC或MINGW/CYGWIN DEV环境,并设置所有必要的库。你会明白的!)

因此,有人可以帮助我理解所有这些,并解释每种方法的差异和利弊。我想知道每个如何跟踪软件包(Windows注册表,配置文件,..)。特别是,您将如何管理所有第三方库(能够列出已安装的软件包,禁用/卸载等。)

有帮助吗?

解决方案

我使用PIP,而不是在Windows上,因此我无法与Windows-Installer选项进行比较,只有一些有关PIP的信息:

  • PIP建立在setuptools之上,要求安装它。
  • PIP是Setuptools easy_install的替代(改进)。它可以执行Easy_install所做的所有操作,再加上更多(确保可以在实际安装其中任何一个之前下载所有所需的发行版,以避免损坏的安装,列表安装的发行版和版本,卸载,搜索PYPI,从需求文件列出的多个分布和多个分布和版本...)。
  • PIP当前不支持安装任何形式的预编译或二进制分布,因此,只有在有适当的编译器可用时,才能安装任何需要编译的扩展名的分布。 Windows二进制安装程序的支持安装在路线图上,但尚不清楚何时发生。
  • 直到最近,PIP的Windows支撑片仍未经过测试。多亏了Dave Abrahams的大量工作,Pip Trunk现在通过Windows上的所有测试(并且有一个连续的集成服务器可以帮助我们确保其保持这种方式),但是尚未发布包括该作品在内的版本。因此,下一个版本应该提供更多可靠的窗口支持。
  • 所有标准的Python软件包安装机制存储了所有有关安装分布的元数据或实际安装程序包旁边的文件中的所有元数据。 distutils使用Distribution_name-xx-pyx.x.egg-info文件,PIP使用类似名称的目录,其中包含多个元数据文件。 Easy_install将所有已安装的Python代码放置在其自己的Zipfile或目录中,并将Egg-Info目录放入该目录中,并在其中使用Metadata。如果您从交互式提示中导入Python软件包,请检查包装的值.__文件__;您应该在附近找到该软件包的发行版的元数据。
  • 有关已安装分布的信息仅通过OS特定的包装工具(例如Windows Installer,APT或RPM)存储在任何类型的全局注册表中。标准Python包装工具不会修改或注意这些清单。
  • PIP(或我认为,任何Python包装工具)最好与 Virtualenv, ,这使您可以创建孤立的人均python迷你环境,您可以在其中安装软件包而不影响整体系统。每个新的Virtualenv都会自动随附安装的PIP。

您可能还想知道的其他几个项目(是的,还有更多!):

  • 分发 是setuptools的叉子,它具有一些其他错误修正和功能。
  • distutils2 旨在成为Python包装的“下一代”。它(希望)采用Distutils/setuptools/distribute/pip的最佳功能。它是独立开发的,尚未准备好使用,但最终应替换Python标准库中的Distutils,并成为事实上的Python包装解决方案。

希望所有帮助澄清的东西!祝你好运。

其他提示

我使用Windows和Python。这有点令人沮丧,因为PIP并不总是可以安装东西。 Python正在移动PIP,所以我仍然使用它。 PIP很好,因为您可以卸载项目并使用

pip freeze > requirements.txt
pip install -r requirements.txt

我喜欢pip的另一个原因是适用于带有Python 3.4的VENV这样的虚拟环境。我发现VENV在Windows上的使用要比Virtualenv容易得多。

如果您无法安装软件包,则必须为其找到二进制文件。 http://www.lfd.uci.edu/~gohlke/pythonlibs/

我发现这些二进制文件非常有用。

PIP试图制作一种称为二进制装置的轮子的东西。

pip install wheel
wheel convert path\to\binary.exe
pip install converted_wheel.whl

您还必须为任何不安装且该软件包所需的必需库执行此操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top