setup.py 使用 conda 安装的依赖项(不是 pip)
setup.py with dependecies installed by conda (not pip)
我正在处理一个现有的 Python 3 代码库,它提供了一个 setup.py
,因此代码被安装为一个 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 eggs 和 Python 轮子,但据我所知,如果 conda
可用,那么我应该使用 conda
版本而不是 eggs/wheels,因为这样我就不必处理下面的 C++ 代码了Python 代码)。
我真的更愿意 conda
安装这些包裹在一些 Python 代码中的 C++ blob 作为库,例如pandas
.
- 是否有可能
conda
驱动 setup.py
中描述的安装过程,所以我不处理 gcc
?
- 如何确保依赖于此内部库(通过
setup.py
安装)的其他 Python 代码正在使用 setup.py
中定义的相同(传递)依赖项?
无论使用哪种安装方法,我如何才能确保依赖项例如pandas
都安装好了?有时我看到 numpy
作为 pandas
的依赖项在 运行 宁 setup.py
时没有安装,但我想避免手动执行此操作(例如使用一些 requirements.txt
文件).
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
我正在处理一个现有的 Python 3 代码库,它提供了一个 setup.py
,因此代码被安装为一个 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 eggs 和 Python 轮子,但据我所知,如果 conda
可用,那么我应该使用 conda
版本而不是 eggs/wheels,因为这样我就不必处理下面的 C++ 代码了Python 代码)。
我真的更愿意 conda
安装这些包裹在一些 Python 代码中的 C++ blob 作为库,例如pandas
.
- 是否有可能
conda
驱动setup.py
中描述的安装过程,所以我不处理gcc
? - 如何确保依赖于此内部库(通过
setup.py
安装)的其他 Python 代码正在使用setup.py
中定义的相同(传递)依赖项?
无论使用哪种安装方法,我如何才能确保依赖项例如pandas
都安装好了?有时我看到 numpy
作为 pandas
的依赖项在 运行 宁 setup.py
时没有安装,但我想避免手动执行此操作(例如使用一些 requirements.txt
文件).
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