首页 > 解决方案 > setup.py 与 conda 安装的依赖项(不是 pip)

问题描述

我正在开发一个现有的 Python 3 代码库,setup.py该代码库提供了一个,因此代码作为 Python 库安装。我试图让这个内部库安装它自己的依赖项(通常的数据科学依赖项,例如,pandas等)。pyodbcsqlalchemy

我想让这个内部库来处理这些依赖项,并假设如果安装了该库,则假定所有传递依赖项都已安装。我还想要conda包的 Anaconda ( ) 版本而不是pip版本。

我从 a 开始requirements.txt,但很快就转到了这个字段setup.py

  install_requires=[
      "pyodbc>=4.0.27",
      "sqlalchemy>=1.3.8",
      "pandas>=0.25.1",
      "requests>=2.22.0",
      "assertpy>=0.14",
      "cycler>=0.10.0",
  ]

但是,当我运行安装过程时:

我看到gcc正在进行一些 / C++ 编译,显示有关 Python 轮子的日志(我不完全理解 Python 鸡蛋和 Python 轮子的含义,但是如果 AFAIKconda可用,那么我应该使用conda版本而不是鸡蛋/轮子因为这样我就不必处理 Python 代码下面的 C++ 代码)。

我真的更愿意conda将这些 C++ blob 安装在一些 Python 代码中作为库,例如pandas.

无论安装方法如何,如何确保pandas也安装了 eg 的依赖项?有时我看到运行时未安装numpy依赖项,但我想避免手动执行此操作(例如,使用某些文件)。pandassetup.pyrequirements.txt

标签: python-3.xpipcondasetup.pytransitive-dependency

解决方案


pip不知道conda,因此您无法构建从 conda 通道中提取其依赖项的 pip 可安装包。

conda不关心setup.py,它使用不同的格式来记录依赖关系。

要使用 安装您的代码,您应该创建一个 conda 包,并在文件conda中指定您的依赖项。meta.yaml有关详细信息,请参阅“conda build”的文档。

https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html


推荐阅读