Python包安装在Windows中

时间:2010-07-01 04:38:17

标签: python pip packages setuptools distutils

我最近开始学习Python,我对如何分发和安装软件包感到困惑。

我了解安装软件包的官方方式是 distutils :您下载源tarball,解压缩并运行:python setup.py install,然后模块将自动安装

我也知道 setuptools ,它附带easy_install帮助程序脚本。它使用 eggs 进行分发,根据我的理解,它构建在distutils之上并执行与上面相同的操作,并且它处理所需的所有依赖项,所有依赖于PyPi

然后还有 pip ,我仍然不确定它与其他人的区别。

最后,由于我在Windows机器上,许多软件包还通过 Windows安装程序提供二进制构建,特别是那些需要编译C / Fortran代码的软件包,否则这将是一场噩梦在Windows上手动编译(假设你有MSVC或MinGW / Cygwin开发环境,并设置了所有必要的库..尽管如此,尝试自己构建numpy或scipy,你会明白的!)

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

2 个答案:

答案 0 :(得分:11)

我使用pip,而不是在Windows上,所以我无法提供与Windows安装程序选项的比较,只是有关pip的一些信息:

  • Pip建立在setuptools之上,需要安装它。
  • Pip是setuptools的easy_install的替代(改进)。它可以执行easy_install所做的一切,还有更多功能(确保在实际安装所有发行版之前可以下载所有需要的发行版,以避免安装损坏,列出已安装的发行版和版本,卸载,搜索PyPI,从列出多个发行版的需求文件安装,以及版本...)。
  • Pip目前不支持安装任何形式的预编译或二进制发行版,因此只有具有适当的编译器时,才能安装任何需要编译扩展的发行版。支持Windows二进制安装程序的安装在路线图上,但目前尚不清楚何时会发生。
  • 直到最近,pip的Windows支持仍然不稳定。感谢Dave Abrahams的大量工作,pip trunk现在通过Windows上的所有测试(并且有一个持续的集成服务器帮助我们确保它保持这种状态),但尚未发布包括该工作的版本。因此,下一版本应该提供更可靠的Windows支持。
  • 所有标准Python软件包安装机制都将有关已安装发行版的所有元数据存储在实际安装的软件包旁边的文件中。 Distutils使用distribution_name-X.X-pyX.X.egg-info文件,pip使用一个名称相似的目录,其中包含多个元数据文件。 Easy_install将所有已安装的Python代码放在​​其自己的zipfile或目录中,并将EGG-INFO目录放在该目录中,并在其中包含元数据。如果从交互式提示符导入Python包,请检查package .__ file__的值。您应该在附近找到该软件包分发的元数据。
  • 有关已安装发行版的信息仅存储在任何类型的全局注册表中,由特定于操作系统的打包工具(如Windows安装程序,Apt或RPM)组成。标准的Python打包工具不会修改或关注这些列表。
  • Pip(或者,在我看来,任何Python打包工具)最好与virtualenv一起使用,它允许您创建隔离的每个项目的Python迷你环境,您可以在其中安装包而不会影响整个系统。每个新的virtualenv都会自动附带pip。

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

  • distribute是一个setuptools的分支,它有一些额外的错误修正和功能。
  • distutils2旨在成为Python包装的“下一代”。它(希望)采用了distutils / setuptools / distribute / pip的最佳功能。它正在独立开发,尚未准备好使用,但最终应该取代Python标准库中的distutils并成为事实上的Python打包解决方案。

希望所有这些都有助于澄清一些事情!祝你好运。

答案 1 :(得分:0)

我使用windows和python。这有点令人沮丧,因为pip并不总是能够安装东西。 Python正在转向pip,所以我仍然使用它。 Pip很不错,因为您可以卸载项目并使用

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

我喜欢pip的另一个原因是像venv和python 3.4这样的虚拟环境。我发现在windows上使用venv比使用virtualenv更容易。

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

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

Pip正在尝试为二进制安装制作一种称为轮子的东西。

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

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