setup.py 与 conda 安装的依赖项(不是 pip)

TPP*_*PPZ 8 pip setup.py python-3.x transitive-dependency conda

我正在研究一个现有的 Python 3 代码库,它提供了一个,setup.py所以代码被安装为一个 Python 库。我试图让与自己的依赖安装了这个内部库(通常的数据科学的人,例如pandaspyodbcsqlalchemy等)。

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

我从 开始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",
  ]
Run Code Online (Sandbox Code Playgroud)

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

  • 要么与 python setup.py install --record installed_files.txt
  • 或与 pip install .

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

我真的更喜欢必须conda安装这些包含在一些 Python 代码中的 C++ blob 作为库,例如pandas.

  • 是否有可能conda驱动 中描述的安装过程,setup.py所以我不处理gcc
  • 如何确保依赖于该内部库(通过 安装setup.py)的其他 Python 代码使用其中定义的相同(可传递)依赖项setup.py

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

Rol*_*ber 5

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

  • 我认为这可能会让人困惑,因为很多 conda 包基本上都是“pip install”构建脚本的包装器,所以很多 conda 包除了配方之外还有一个“setup.py”。例如 https://github.com/conda-forge/requests-feedstock/blob/master/recipe/meta.yaml (2认同)