如果我的 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
将尝试在通过setup.py
实际安装之前import pipenv
。
如果您尝试在干净的环境中安装我的软件包,会发生什么情况:
from pipenv.project import Project
ModuleNotFoundError: No module named 'pipenv'
如果我在运行之前pip install pipenv
,然后在项目根目录中pip install -e ./
,则安装可以正常工作。
我想不出一个好的解决方案...
我找到了答案。 我会发布它,以防有人在这里结束。
答案在这里:https://pipenv.kennethreitz.org/en/latest/advanced/#pipfile-vs-setup-py
Pipfile
适用于应用程序。
但是,库(包)仍然可以从setup.py
生成Pipfile.lock
。
$ pipenv install -e .