【问题标题】:How to handle external dependencies in python?如何处理python中的外部依赖?
【发布时间】:2019-08-13 01:12:03
【问题描述】:

我有一个在 ubuntu 上运行良好的 python 脚本。我还使用 pip freeze 命令维护了一个需求文件。但是当我尝试在 centOS 中安装要求时,我遇到了软件包的依赖问题。这些依赖项是外部的,与 python 无关。

例如,我尝试在我的ubuntu机器上安装mysql-python,它安装成功。但是当我尝试在我的 centos 机器上安装 mysql-python 时,它失败了,因为 mysql-python 依赖于 pip freeze 无法列出的其他东西。

我收到的错误及其解决方案在下面的链接中得到解决。但我想知道的是如何处理这种依赖关系。

mysql_config not found when installing mysqldb python interface

【问题讨论】:

  • 你可能想看看 Docker。
  • Linux 使用包管理。在 CentOS 中,包管理器为 yum,在 Fedora 中为 dnf,在 Debian/Ubuntu 中为 apt。他们可以安装 python 包及其依赖项,因为打包程序以特定于操作系统/包管理器的格式列出了这些依赖项。一旦你使用pip,你就超出了标准,必须手动安装所有东西。因此,您必须在特定于操作系统的包管理器和pip 之间进行选择。

标签: python pip dependencies dependency-management


【解决方案1】:

我过去在部署期间的做法是,创建一个shell 脚本。 shell脚本会先安装mysql-server,然后再安装Python library

示例shell脚本可以在initial_setup.sh下面找到:

#!/bin/bash
apt-get install mysql-server
apt-get install libmysqlclient-dev

pip install -r requirements.txt

【讨论】:

  • 我最初担心的是有没有办法将 mysql-server 作为依赖项包含在内?因为我之前已经安装了 mysql-server,我不知道 mysql-python 对 mysql-server 有依赖。所以当我尝试在另一台机器上安装相同的python包时,我开始得到模棱两可的错误。
  • 这就是shell脚本的作用,你需要使用shell脚本来安装python包,并且你需要处理shell脚本内部的所有依赖问题。这就是完成了多少 Web 应用程序。
猜你喜欢
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多