【发布时间】:2020-01-09 07:48:33
【问题描述】:
我正在开发提供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 将这些 C++ blob 安装在一些 Python 代码中作为库,例如pandas.
- 是否有可能让
conda驱动setup.py中描述的安装过程,所以我不处理gcc? - 如何确保其他依赖于该内部库(通过
setup.py安装)的 Python 代码使用在该setup.py中定义的相同(传递)依赖项?
无论安装方法如何,我如何确保依赖项例如pandas 也安装了吗?有时我看到 numpy 作为 pandas 的依赖项在运行 setup.py 时未安装,但我想避免手动执行此操作(例如使用一些 requirements.txt 文件)。
【问题讨论】:
标签: python-3.x pip conda setup.py transitive-dependency