【问题标题】:Is there a way to automatically install required packages in Python?有没有办法在 Python 中自动安装所需的包?
【发布时间】:2020-05-10 06:27:29
【问题描述】:

在 Node.js 中,我们为一个项目创建一个 package.json 文件,其中列出了所有依赖项,以便 NPM 可以自动安装它们。

有没有一种等效的方法可以用 Python 做到这一点?

【问题讨论】:

  • 无论您选择使用哪种安装方法(conda、freeze、setup.py),请使用虚拟环境。它将使您的安装寿命大大提高。
  • @SteveJ 我正在使用 PyCharms 虚拟环境。但问题是 Python 调试器似乎因为与 PyQt 相关而崩溃。唯一的选择似乎是在没有 PyCharm 的情况下工作,这意味着我要么使用另一个 IDE / 调试器,要么切换到使用终端并全局安装所有依赖项......或者我不明白什么?
  • @KaizerSozay This question 可能对 Pycharm 中的 PyQt 崩溃问题有用。
  • @Kaizer;我建议两件事。 1) 使用 PyCharm 提交一个错误——他们真的在它之上。 2) 由于 PyCharm 为您创建了一个虚拟环境,您需要做的就是从终端的虚拟环境中运行它。您无需重新安装任何东西。
  • @KaizerSozay;添加到我之前的内容中,如果 PyCharm 创建了一个虚拟环境,那么该虚拟环境已经安装了所有需要的包。您所要做的就是从终端激活虚拟环境。诀窍是现在有两种类型的虚拟环境 1) virtualenv / virtualenvwrapper,2) pyvenv(现在只是 venv)。阅读有关如何从终端激活环境的文档。在一种情况下,它是“workon ”。另一个是“source venv/bin/activate”(Linux)

标签: python python-3.x


【解决方案1】:

Node 有 npm,类似地 python 有 pip

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

所以首先你需要安装pip,

sudo apt-get install python-pip

您必须将您的需求保存在项目文件夹中的 requirements.txt 中,就像 nodejs 中的 package.json 一样。

例如:

pip install package1
pip install package2
pip install package3

然后转到您的项目路径,然后执行以下操作:

pip install -r requirements.txt

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Node.js 也是一样,运行npm install --save 将其保留在package.json 中。或者手动生成package.json文件也可以。
    • 我建议使用pipenv 来管理您的python 依赖项。请参考here
    • npm install --save 将在安装依赖项后保留。你在初始阶段你不知道如何安装,什么都没有。所以pip freeze 只列出默认包,如six wsgi 如果它的 django 就是这样..
    • 我在 Pycharm 中使用虚拟环境。有没有办法导出我通过 pycharm 安装的包?
    • 你可以从设置->项目解释器中查看。如果要导出,请打开终端,然后按照@LuCima 回答,pip freeze > requirements.txt
    【解决方案3】:

    在交付具有依赖关系的程序时,我发现的最快和最好的方法是使用几个简单的步骤。

    1. 使用允许运行pipreqs /--directory to your program folder--/pip install pipreqs 并在程序文件夹中为您的程序生成列出所有包依赖项的 requirements.txt 文件。
    2. 将包含包依赖项的文件夹从您的 Python 包下载到的位置(例如..\Python\Python38-32\Lib\site-packages)复制/粘贴到您的程序的文件夹中。
    3. 运行 pip uninstall -r requirements.txt 并运行程序以确保它在没有安装依赖项的情况下仍然可以工作。

    【讨论】:

      【解决方案4】:

      你可以使用conda by

      conda install --file requirements.txt
      

      【讨论】:

      • python 有自己的包安装程序,名为pip
      【解决方案5】:

      如果您要创建独立库,请考虑使用 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 packaging guide 以获取有关如何使用包的更全面的信息,例如installation of package(涵盖 pip、virtualenv 的使用,这对于设置开发环境很有用),producing a package 可以分发(涵盖在项目的setup.py 中放入的内容)。

      【讨论】:

        【解决方案6】:

        pipenv 现在是officially recommended 打包工具,用于安装包和管理依赖项。它捆绑了相关工具(如 virtualenv、pipfile 等)中的强大功能。它还为您提供来自其他世界的最佳功能,例如 npmyarn 等。

        不过,pip 默认在 Python 中可用。它是用于安装 python 包的最常用工具。当作者发布 Python 包时,它们包含一个 setup.py 文件,该文件将 pip 定向到依赖项,以便它可以在您的环境中解析它们。作者还可以包含一个或多个 requirements.txt 文件,您可以直接 pip 收集所需的包 IE pip install -r /path/to/requirements.txt

        通常来说,您可能使用的几乎所有软件包都发布在 PyPI 存储库中,您只需要执行 pip install <package name> 即可,剩下的事情它会计算出来。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-02
          • 1970-01-01
          • 1970-01-01
          • 2014-07-30
          • 2018-12-31
          • 2021-07-15
          • 1970-01-01
          • 2011-06-08
          相关资源
          最近更新 更多