【发布时间】:2014-07-21 02:39:12
【问题描述】:
我目前正在处理一个包,在我的requirements.txt 中,我有一个依赖项:wikipedia。现在,wikipedia 1.3 使用 requests-2.2.1 而我的包使用版本 2.3.0。
另外,正如人们所料,wikipedia-1.3 的安装取决于它的依赖关系。
但是,如果我启动一个新的 virtualenv 并直接在我的requirements.txt 中包含wikipedia,它会在requests 上给出一个ImportError,因为当时setup.py 运行,requests-2.3.0 的setup.py除非所有其他人都执行,否则不会执行。在下图中,requests 解包后没有运行setup.py。
出于某种奇怪的原因,wikipedia 的setup.py 包含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 替换。
我尝试通过各种规范来解决这个问题,但这些规范令人困惑。我该如何克服这种混乱?
【问题讨论】:
-
解决这个问题的正确方法是告诉
wikipedia项目不要依赖特定的版本,而是指定一个最小版本。 -
是的,我已经这样做了github.com/goldsmith/Wikipedia/issues/50,但仍然希望是否有办法覆盖?
-
另外,为什么'requests'模块在解压后不显示'running setup.py'?
-
我大量更新了您帖子的格式。尽量避免不必要的强调,并在适用的情况下使用代码标签`。也不要使用图像来显示代码输出。这使得搜索引擎(以及未来的读者)更难(如果不是不可能的话)找到这篇文章。相反,将控制台输出复制到您的帖子中。
-
感谢布拉姆。感谢您的努力。
标签: python python-2.7 pip setup.py requirements.txt