有没有一种方法可以在Python中自动安装所需的软件包?

8
在Node.js中,我们创建一个package.json文件来列出所有依赖项,以便NPM可以自动安装它们。在Python中是否有相应的方法?

2
无论您选择使用哪种安装方法(conda、freeze、setup.py),请使用虚拟环境。这将使您的安装过程变得更加轻松愉快。 - SteveJ
@SteveJ 我正在使用PyCharm的虚拟环境。但问题是Python调试器似乎因为与PyQt有关的某些原因而崩溃。唯一的替代方案似乎是在没有PyCharm的情况下工作,这意味着我要么使用另一个IDE /调试器,要么切换到使用终端并全局安装所有依赖项...或者我没有理解什么? - Rahul Iyer
@KaizerSozay 这个问题可能对于在Pycharm中出现的PyQt崩溃问题有所帮助。 - metatoaster
@Kaizer; 我建议两件事。1)向PyCharm提交错误报告--他们真的很重视这个问题。2)由于PyCharm为您创建了虚拟环境,所以您只需要从终端中的虚拟环境运行它。您不需要重新安装任何东西。 - SteveJ
@KaizerSozay; 在我之前的回答中,如果PyCharm已经创建了虚拟环境,那么该虚拟环境已经安装了所有所需的软件包。您只需要从终端激活虚拟环境即可。诀窍在于现在有两种类型的虚拟环境:1)virtualenv / virtualenvwrapper,2)pyvenv(现在只是venv)。请阅读文档以了解如何从终端激活环境。在一种情况下,它是“workon <envname>”。在另一种情况下,它是“source venv/bin/activate”(Linux)。 - SteveJ
6个回答

7

Node有npm,类似于Python拥有pip

pip是一个用于安装和管理使用Python编写的软件包的包管理系统。

因此,您首先需要安装pip。

sudo apt-get install python-pip

在你的项目文件夹中,你需要像node.js中的package.json文件一样,在requirements.txt中保存你的依赖。

例如:

pip install package1
pip install package2
pip install package3

然后进入您的项目路径,执行以下操作:
pip install -r requirements.txt

4
你可以使用pip freeze > requirements.txt生成依赖列表,然后使用pip install -r requirements.txt安装所有依赖项。

Node.js是一样的,运行npm install --save将其保留在package.json中。或者如果您手动生成package.json文件也可以。 - Hou Lu
我建议使用 pipenv 来管理你的 Python 依赖项。可以在这里查看相关文档:https://docs.pipenv.org/。 - Hou Lu
npm install --save 会在依赖项安装完成后保留它们。在初始阶段,您可能不知道如何安装并且什么都没有。因此,pip freeze 只会列出默认包,例如 sixwsgi,如果是 Django 的话就只有这些。 - Mohideen bin Mohammed
我正在Pycharm中使用虚拟环境。有没有办法通过Pycharm导出我安装的软件包? - Rahul Iyer
您可以从设置->项目解释器中查看。如果您想要导出,则打开终端,然后按照@LuCima的答案操作,输入pip freeze > requirements.txt。 - Mohideen bin Mohammed

3

pip在大多数情况下默认与Python一起提供。它是安装Python包最常用的工具。当作者发布Python包时,他们会包含项目元数据(例如setup.pysetup.cfgpypoject.toml文件),其中部分声明了包的依赖关系,以便像pip这样的打包工具可以在安装包时解析这些依赖关系。一些项目还可能在源代码中包含一个或多个requirements.txt文件,您可以使用pip install -r /path/to/requirements.txt命令指示pip收集所需的包。

通常来说,您可能使用的几乎所有包都发布在PyPI存储库中,您只需要执行pip install <package name>命令,pip将解析所有所需的依赖项。

还有其他可用的工具,其中包括类似于nodejs lockfiles的锁文件功能。pipenv是一种由PyPA推荐的安装软件包和管理依赖项的工具。它捆绑了与相关工具(如virtualenv、pipfile等)相似的功能。它还提供了类似于JavaScript世界中的工具(例如npmyarn等)的相似特性。


2

您可以通过以下方式使用 conda

conda install --file requirements.txt

Python有自己的软件包安装程序,称为“pip”。 - Mohideen bin Mohammed

2
如果您正在创建一个独立的库,请考虑使用 setuptools,并定义一个包含 install_requires 字段的 setup.py 文件来指定该库所需的依赖项。示例:
from setuptools import setup

setup(
    name='example.package',
    install_requires=[
        'setuptools',
        'requests>=3.0.0',
        # other requirements
    ],
    # ... and other attributes
)

如果您正在尝试创建开发/构建环境,那么一个 requirements.txt 文件可能就足够了,但是这并不能通过标准依赖项解析向其他 Python 包提供。
请参阅 install_requires vs. Requirement files 此外,请参考 Python 打包指南,以获取更全面的有关如何处理软件包的信息,例如安装软件包(介绍了 pip 和 virtualenv 的用法,这对于设置开发环境非常有用),生成可分发的软件包(介绍了在项目的 setup.py 中应该放置哪些内容)。

2
我发现在交付具有依赖性的程序时,最快且最好的方法是使用以下几个简单步骤:
  1. 使用pip install pipreqs命令安装pipreqs,并运行pipreqs /--指向你的程序文件夹的目录--/命令,生成一个名为requirements.txt的文件,该文件列出了你的程序所需的所有包依赖。
  2. 将包含依赖包的文件夹从Python包下载到的位置(例如..\Python\Python38-32\Lib\site-packages)复制/粘贴到你的程序文件夹中。
  3. 运行pip uninstall -r requirements.txt并运行程序以确保它在没有安装依赖项的情况下仍然可以正常工作。

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