我正在研究提供 setup.py
的现有 Python 3 代码库。所以代码被安装为一个 Python 库。我试图让这个内部库安装它自己的依赖项(通常的数据科学库,例如 pandas
、 pyodbc
、 sqlalchemy
等)。
我想要这个内部库来处理这些依赖项并假设 如果安装了该库,则假定已安装所有可传递的依赖项 .我也想要 Anaconda ( conda
) 版本的包而不是 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",
]
但是,当我运行安装过程时:
python setup.py install --record installed_files.txt
pip install .
我看到有一些
gcc
/C++ 编译显示关于 Python 轮子的日志(我不完全理解 Python 蛋和 Python 轮子的含义,但是如果 conda
可用,那么我应该使用 conda
版本而不是蛋/轮子因为那样我就不必处理 Python 代码下面的 C++ 代码了)。我真的更喜欢
conda
将这些包含在一些 Python 代码中的 C++ blob 安装为库,例如pandas
.conda
驱动 setup.py
中描述的安装过程所以我不处理 gcc
? setup.py
安装)使用在 setup.py
中定义的相同(传递)依赖项? 无论安装方法如何,我如何确保例如的依赖项
pandas
也安装了?有时我看到numpy
作为 pandas
的依赖项运行时未安装 setup.py
,但我想避免手动执行此操作(例如使用某些 requirements.txt
文件)。
最佳答案
pip
不知道conda
,因此您无法构建从 conda channel 中提取其依赖项的 pip 可安装包。conda
不在乎 setup.py
,它使用不同的格式来记录依赖项。
使用 conda
安装您的代码,您应该创建一个 conda 包,并在 meta.yaml
中指定您的依赖项文件。有关详细信息,请参阅“conda build”的文档。
https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html
关于python-3.x - setup.py 与 conda 安装的依赖项(不是 pip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57821903/