我目前正在处理一个包,并且在我的 中requirements.txt
,我有一个依赖项:wikipedia
. 现在,wikipedia
1.3 使用requests-2.2.1
,而我的包使用 2.3.0 版本。
此外,正如人们所期望的那样,wikipedia-1.3
的安装取决于它的依赖项的存在。
但是,如果我启动一个新的 virtualenv 并直接包含wikipedia
在 my 中requirements.txt
,它会给出一个ImportError
on,requests
因为在setup.py
运行时,requests-2.3.0
'ssetup.py
不会执行,除非所有其他人都执行。在下图中,拆包后没有运行setup.py
。requests
出于某种奇怪的原因,wikipedia
's setup.py
contains import wikipedia
,它甚至在安装之前就导入了它的依赖项;但是它通过了 CI 测试,因为它通过 pip 单独安装需求,然后运行setup.py
.
为了克服这种情况,我制作了一个设置脚本,其中包括:
pip install -r requirements.txt
pip install wikipedia
pip install -e .
- 这安装
requests-2.3.0
和beautifulsoup4
; - 然后安装
wikipedia
(然后可以运行setup.py
并安装wikipedia
和requests-2.2.1
) - 然后'pip install -e。' 选项再次安装我的包
requests-2.3.0
。
因此requests-2.3.0
首先安装,然后被旧版本 2.2.1 替换,然后再次替换为2.3.0
.
我尝试通过各种规范来克服这个问题,但这些都令人困惑。我怎么能克服这个烂摊子?