Установка Pip в Virtualenv работает, но * не * работает с `-r Требования.txt` - PullRequest
0 голосов
/ 14 февраля 2019

Я попал в уникальную версию хорошо документированной ошибки Virtualenv-Pip, обсуждаемой в таких ответах, как здесь и здесь .В этих случаях проблема заключалась в том, что pip устанавливался в глобальную папку, в некоторых случаях из-за неправильного шебанга в одном из сценариев pip, в других из-за неправильной строки 42 в сценарии bin/activate, но всегда устанавливаемой глобально.

Моя проблема другая: в моей виртуальной среде 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

Это не приводит к добавлению новых локальных пакетов сайта.Более того, когда я пытаюсь увидеть, где они установлены, в /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 для обоих sudo apt install python-pip и sudo apt install python3-pip, и эта виртуальная среда была созданас virtualenv -p python3 venv

My requirements.txt:

Cython
numpy
sklearn
matplotlib
torch>=0.4.1
torchvision>=0.2.1
argparse
quadprog

Полный вывод с pip install -r requirements.txt

1 Ответ

0 голосов
/ 18 февраля 2019

Так что это частичный ответ, но я понял, по крайней мере, проблему, даже если я не совсем понимаю, почему.Когда я изменил:

virtualenv -p python3 venv

на

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

pip install -r requirements.txt работал, давая правильные пакеты сайта.

Опять же, я не знаю, почему это сработало, но это сработало.Я только попробовал это снова с другой версией Python с меньшим количеством удачи, так что я не совсем уверен, является ли это универсальным исправлением.Я отредактирую этот ответ, когда у меня будет лучшее объяснение.

...