Пип изнутри Virtualenv не видит внешних зависимостей (в частности, Visual C ++ Runtime) - PullRequest
0 голосов
/ 30 марта 2020

Я использую Pycharm и начал пытаться использовать встроенную функцию virtualenv, которая создает новый virtualenv для каждого проекта на основе вашего выбора базового интерпретатора. Это на Windows, но я видел нечто похожее на Ма c. Я прочитал этот вопрос, но не смог найти работающий ответ, и многие из них, похоже, касались установки Visual C ++, а не вопроса virtualenv.

Требуется Microsoft Visual C ++ 14.0 (Невозможно find vcvarsall.bat)

Я выполнил установку fre sh из Python 3.8, затем я создал virtualenv на основе этого интерпретатора. Затем я попытался использовать pip для установки cx- oracle в virtualenv и получил ошибку

error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/

Однако у меня это уже установлено. Я знаю это, потому что, если я выхожу из virtualenv и использую pip для прямой установки, он работает абсолютно нормально. Похоже, что что-то в virtualenv мешает установочному сценарию найти внешние зависимости.

C:\Users\simonn\AppData\Local\Programs\Python\Python38\Scripts>pip install cx-oracle
Collecting cx-oracle
  Downloading https://files.pythonhosted.org/packages/36/b6/3f5a6532deafbd4e9a2a6fbb4bbaf1c42cec90e78ef92318f168161f2eed/cx_Oracle-7.3.0-cp38-cp38-win_amd64.whl (191kB)
     |████████████████████████████████| 194kB 2.2MB/s
Installing collected packages: cx-oracle
Successfully installed cx-oracle-7.3.0

Возможно, актуально, но я не уверен: У меня была похожая проблема с Ma c (также с Pycharm), когда virtualenv не мог найти graphviz. Я исправил это, добавив graphviz к переменной PKG_CONFIG_PATH с активированной virtualenv. Кажется, что у virtualenv был свой собственный параллельный набор системных переменных, это так? Может ли это быть здесь, может быть, мне нужно добавить VC ++ в PATH внутри virtualenv ...

РЕДАКТИРОВАТЬ: Таким образом, я частично ответил на мой собственный вопрос. Virtualenv явно действительно изменяет переменную PATH, чтобы поставить бинарные файлы virtualenv впереди глобальных. Однако это не объясняет проблему, которую я получаю, поскольку (из того, что я вижу), PATH включает обязательные компоненты в обоих случаях.

...