如果setup.py具有依赖项怎么办?

时间:2019-07-19 01:50:28

标签: python pip setup.py pipenv

如果pip可安装软件包中的setup.py有依赖性,该怎么办?

例如,在setup.py中,您将看到:

from pipenv.project import Project
from pipenv.utils import convert_deps_to_pip

这样我就可以解析我的pip包依赖项:

pfile = Project(chdir=False).parsed_pipfile
requires = convert_deps_to_pip(pfile['packages'], r=False)

并将它们交给setup()

setup(
    ...
    install_requires = requires,
    ...)

但是,我不能假定此pip软件包的用户已安装pipenv。 如果我将pipenv添加为依赖项,则setup.py将尝试通过import pipenv实际安装之前setup.py

如果您尝试在干净的环境中点安装我的软件包,将会发生以下情况:

from pipenv.project import Project
    ModuleNotFoundError: No module named 'pipenv'

如果我先运行pip install pipenv,然后在项目根目录中pip install -e ./,则安装成功。

我想不出一个好的解决方案...

1 个答案:

答案 0 :(得分:0)

我找到了答案。如果有人在这里结束,我将发布它。
答案在这里:https://docs.pipenv.org/en/latest/advanced/#pipfile-vs-setup-py

Pipfile适用于应用程序。
但是,库(程序包)仍然可以从Pipfile.lock生成setup.py

$ pipenv install -e .