在Virtualenv中可以安装Pip,但在`-r requirements.txt'中不能使用*

时间:2019-02-14 01:47:17

标签: python pip install virtualenv requirements.txt

我遇到了一个经过充分证明的Virtualenv-Pip错误的独特版本,该错误在herehere之类的答案中进行了讨论。在这些情况下,问题是pip安装在全局文件夹中,在某些情况下,是因为其中一个pip脚本中的shebang错误,在其他情况下,则是由于bin/activate脚本中的第42行是错误的,但始终会安装

我的问题有所不同:在我的虚拟环境中pip install <package>可以按需工作(在本地安装),但是pip install -r requirements.txt安装到空白例如:

pip install scipy

然后查看/home/user/software/project/venv/lib/python3.6/site-packages的内容,我得到结果:

easy_install.py  
numpy  
numpy-1.16.1.dist-info  
pip  
pip-19.0.2.dist-info  
pkg_resources  
__pycache__  
scipy  
scipy-1.2.1.dist-info  
setuptools  
setuptools-40.8.0.dist-info  
wheel  
wheel-0.33.0.dist-info

但是,在相同的虚拟环境中,我运行pip install -r requirements.txt,其中requirements.txt要求安装numpy,Cython,sklearn,matplotlib和argparse,并且输出:

Collecting Cython (from -r requirements.txt (line 1))                                                                                                                                                              
  Downloading https://files.pythonhosted.org/packages/16/98/49aa24054e99e9c7734e49d6996662f547e4e2faae0051d35fbbc461afa4/Cython-0.29.5-cp36-cp36m-manylinux1_x86_64.whl (2.1MB)                                    
    100% |████████████████████████████████| 2.1MB 23.6MB/s                                                                                                                                                         
Collecting numpy (from -r requirements.txt (line 2))                                                                                                                                                               
  Using cached https://files.pythonhosted.org/packages/f5/bf/4981bcbee43934f0adb8f764a1e70ab0ee5a448f6505bd04a87a2fda2a8b/numpy-1.16.1-cp36-cp36m-manylinux1_x86_64.whl                                            
Collecting sklearn (from -r requirements.txt (line 3))                                                                                                                                                             
  Downloading https://files.pythonhosted.org/packages/1e/7a/dbb3be0ce9bd5c8b7e3d87328e79063f8b263b2b1bfa4774cb1147bfcd3f/sklearn-0.0.tar.gz
Collecting matplotlib (from -r requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/71/07/16d781df15be30df4acfd536c479268f1208b2dfbc91e9ca5d92c9caf673/matplotlib-3.0.2-cp36-cp36m-manylinux1_x86_64.whl (12.9MB)
    100% |████████████████████████████████| 12.9MB 6.3MB/s
Collecting argparse (from -r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl

这不会导致对本地站点包进行任何新添加。此外,当我尝试查看安装位置时,site-packages/usr/lib/python2.7/usr/local/lib/python2.7/usr/lib/python3/usr/lib/python3.6中没有usr/lib/python3.7目录,~/.local/lib/python3.6/~/.local/lib/python2.7/

要验证这一点,请在我运行时: find /usr/ -name "Cython" 我得到一个空结果。

有什么建议吗?我可以编写一个bash脚本来代替,它实际上是调用pip install,但这似乎太草率了,我觉得我应该在变得更糟之前解决这个问题。

注意:

我的机器安装在18.04.1上,它已将python3.6.7作为python3和python 2.7.15作为python2安装为机器默认值,我为pip和{{ 1}}和sudo apt install python-pip,并且此虚拟环境是使用sudo apt install python3-pip

创建的

我的virtualenv -p python3 venv

requirements.txt

Full output from pip install -r requirements.txt

1 个答案:

答案 0 :(得分:0)

所以这是部分答案,但是即使我不完全理解原因,但我至少可以弄清楚这个问题。当我改变时:

virtualenv -p python3 venv

virtualenv -p /usr/lib/python3.6 venv

pip install -r requirements.txt工作正常,产生了正确的网站程序包。

再次,我不知道为什么这样做,但确实如此。我只是用运气差一点的其他python版本再次尝试了,所以我不确定这是否是一个普遍的解决方案。当我有更好的解释时,我将编辑此答案。