什么是安装Python模块或包?

10

Python的模块只是一个.py源代码文件。而Python的包则是一组模块的集合。

那么为什么我们需要像pip这样的程序来“安装”Python模块呢?为什么不只需下载文件,将它们放入我们项目的文件夹中并import它们呢?

“安装”一个模块或一个包到底意味着什么?pip又具体做了些什么呢?

在Windows和Linux上会有不同吗?


你会如何下载这些文件? - Simeon Visser
@SimeonVisser 您的意思是 pip 是一个工具,用于从中央仓库下载模块以及依赖项(类似于 Java 的 Maven)吗? - Aviv Cohn
“为什么不直接下载文件,将它们放入我们项目的文件夹中并导入它们呢?”——好吧,你可以试试看它能否正常工作!然后你必须自己找到它的依赖项,并明确地 .<vcs>ignore 每个依赖项或者用不属于你的代码填充你的存储库。那么如何保持这些依赖项的最新状态呢? - jonrsharpe
基本上是的。pip 是一个用于下载文件并将它们放置在正确位置的工具。 - Simeon Visser
pip 不仅仅只能做那些事情。它会执行一个模块的 setup.py,在某些情况下(例如 numpy)可能涉及一些实际的编译等操作。 - greschd
1
我认为 pip 的设计初衷是为了快速下载软件包并方便安装。install 意味着将所有文件复制到路径中。但是,打开Web浏览器,查找软件包或模块,下载并解压缩...还是只需要一行命令。你更喜欢哪个? - Remi Guan
2个回答

5
为什么需要像pip这样的程序来“安装”Python模块?为什么不能只是下载文件并将它们放在项目文件夹中,然后导入它们?
这只是为了方便软件的安装,无需捆绑所有依赖项或要求用户下载文件。
您可以键入“pip install mysoftware”,这也会安装所需的依赖项。您还可以轻松升级软件。
“安装”模块或包到底意味着什么?pip到底是做了什么?
它将复制文件到Python路径中的目录中。这样,您就可以导入该包,而不必将目录复制到您的项目中。

0

在您的提案中,对于每个项目,您都必须下载所需的模块作为依赖项。您必须一遍又一遍地下载它们,并将它们添加到您的项目中,这并不是非常合适的做法,尽管像node.us这样的平台可以这样做。

Pip 的作用是将您安装的模块保存在 /use/lib/python*/site-packages/ 中,因此它明显包含在您的 Python 路径中。因此,当您尝试导入模块或包时,它会在 site-package 中检查是否存在。如果存在,则该代码将与您的项目一起使用。如果不存在,则会出现错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接