小编arc*_*ife的帖子

setup.py&pip:覆盖requirements.txt中依赖项的子依赖项之一

我正在开发一个软件包,在我的工作中requirements.txt,我有一个依赖:wikipedia.现在,wikipedia1.3使用requests-2.2.1我的包使用版本2.3.0.

此外,正如人们所预料的那样,wikipedia-1.3安装取决于它的依赖性.

但是,如果我开始一个新的virtualenv和直接包括wikipedia在我的requirements.txt,它提供了一个ImportErrorrequests,因为当时的setup.py运行,requests-2.3.0setup.py不执行,除非所有其他执行.在下面附的图,有没有运行setup.pyrequests它就会被解开了.

请求已安装但未同时运行setup.py

出于某种奇怪的原因,wikipediasetup.py包含import wikipedia,这反过来进口它的依赖他们甚至在安装之前; 然而,它通过了CI测试,因为它通过pip单独安装需求然后运行setup.py.

为了解决这个问题,我制作了一个包含以下内容的安装脚本:

pip install -r requirements.txt
pip install wikipedia
pip install -e .
Run Code Online (Sandbox Code Playgroud)
  • 这安装requests-2.3.0beautifulsoup4;
  • 然后安装wikipedia(其然后可以运行setup.py并安装wikipediarequests-2.2.1)
  • 然后'pip install -e.' 选项requests-2.3.0再次安装我的包.

因此requests-2.3.0首先安装,然后由旧版本2.2.1替换,然后再次替换2.3.0. …

python pip setup.py python-2.7 requirements.txt

11
推荐指数
1
解决办法
2450
查看次数

直接运行的wikipedia AttributeError

对于python的wikipedia模块(通过pip安装)

当我使用ipython并执行以下操作时:

import wikipedia
print wikipedia.summary("Wikipedia")
Run Code Online (Sandbox Code Playgroud)

..工作正常.但是当我在文件中保存它并从shell运行它时:

python filename.py
Run Code Online (Sandbox Code Playgroud)

它显示了AttributeError:'module'对象没有属性'summary'

为什么会这样?

PS:我后来在'filename.py'中包含以下内容,列出了这个模块的范围:

print dir(wikipedia) 
Run Code Online (Sandbox Code Playgroud)

..这给了:

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'wikipedia']
Run Code Online (Sandbox Code Playgroud)

而在ipython中,dir(维基百科)按预期提供所有名称:

['API_URL', ..(snip) .. 'PageError', 'RATE_LIMIT', .. (snip) ..  '__name__', 'time', 'timedelta']
Run Code Online (Sandbox Code Playgroud)

为什么这样?

python pip wikipedia-api python-2.7

1
推荐指数
1
解决办法
959
查看次数