我已经实现了一个Python库,该库需要pip
上存在的python模块。
由于各种原因(与该问题无关),我不得不对该模块进行一些修改,因此我将其克隆到github
上自己的私有仓库中,并使用了后者。
要从我的私人仓库中安装模块,我在库的Dockerfile
中进行了此操作:
add deps.txt /deps.txt
run pip install -r /deps.txt
我在deps.txt
中的位置:
-e git://github.com/Private/my_module.git@dcdf3b2e7ffb7c4dd7831ea7795fabce0e4944rc#egg=my_module
构建Docker容器时,从日志中可以看到正在安装的模块实际上是我在git仓库中克隆的模块。
问题是当我尝试使用如下所示的setup.py
安装我的媒体库时:
from setuptools import setup, find_packages
try: # for pip >= 10
from pip._internal.req import parse_requirements
except ImportError: # for pip <= 9.0.3
from pip.req import parse_requirements
install_reqs = parse_requirements('deps.txt', session='hack')
reqs = [str(ir.req) for ir in install_reqs]
setup(name='Library',
version='0.0.0',
...
packages=find_packages(),
install_requires=reqs,
zip_safe=False)
在这种情况下,将要安装的模块不是我的,而是pip
中现有的模块。看起来他是否不在乎命令-e git://github.com/...
。