Виртуальная среда не имеет значения после активации - PullRequest
1 голос
/ 04 ноября 2019

У меня есть только 1 библиотека на моем локальном ПК, и это просто. Я создал виртуальную среду в папке, активировал ее, и pip установил в нее django. django находится в папке site-packages моего venv, но если я запускаю pip freeze с активным venv где-нибудь на моем ПК, он превосходит numpy. Единственный способ, которым я могу выполнить любую команду, для которой требуются пакеты, установленные в venv, - это запустить ее из этой папки. Я видел много подобных вопросов, но они старые или не отвечают, почему это происходит. Например, я набираю в командной строке:

C:\Users\myname\Desktop>python -m pip freeze
numpy==1.9.6
C:\Users\myname\Desktop\Venv0\Scripts>python -m pip freeze
Django==2.2.7
pytz==2019.3
sqlparse==0.3.0

C:\Users\eloim\Desktop\Venv0\Scripts>activate

(Venv0) C:\Users\eloim\Desktop\Venv0\Scripts>
(Venv0) C:\Users\eloim\Desktop\Venv0\Scripts>python -m pip freeze
Django==2.2.7
pytz==2019.3
sqlparse==0.3.0

(Venv0) C:\Users\eloim\Desktop>python -m pip freeze
numpy==1.9.6

Насколько я прочитал в документах, после активации venv я смог найти только пакеты django. Где я не прав? какую концепцию я не понимаю?

Я задаю этот вопрос, потому что мне нужно запустить некоторые команды из django в определенной папке, но в любом месте из папки скриптов не найти пакет.

Спасибозаранее

- РЕДАКТИРОВАТЬ - Это то, что я получаю, когда использую где python:

C:\Users\myname>where python
C:\Users\myname\AppData\Local\Programs\Python\Python37-32\python.exe
C:\Users\myname\AppData\Local\Microsoft\WindowsApps\python.exe

(Venv0) C:\Users\myname\Desktop>where python
C:\Users\myname\AppData\Local\Programs\Python\Python37-32\python.exe
C:\Users\myname\AppData\Local\Microsoft\WindowsApps\python.exe

(Venv0) C:\Users\myname\Desktop\Venv0\Scripts>where python
C:\Users\myname\Desktop\Venv0\Scripts\python.exe
C:\Users\myname\AppData\Local\Programs\Python\Python37-32\python.exe
C:\Users\myname\AppData\Local\Microsoft\WindowsApps\python.exe

Увидев это, я совершенно потерян. После активации VE ничего не меняется, так почему это должно быть полезно?

Также вот что возвращает пип-стоп:

C:\Users\myname>pip freeze
numpy==1.9.6

(Venv0) C:\Users\myname\Desktop>pip freeze
numpy==1.9.6

(Venv0) C:\Users\myname\Desktop\Venv0\Scripts>pip freeze
Fatal error in launcher: Unable to create process using '"c:\users\myname\venv0\scripts\python.exe"  "C:\Users\myname\Desktop\Venv0\Scripts\pip.exe" freeze'

C:\Users\eloim\Desktop\Venv0\Scripts>pip freeze
Fatal error in launcher: Unable to create process using '"c:\users\eloim\venv0\scripts\python.exe"  "C:\Users\eloim\Desktop\Venv0\Scripts\pip.exe" freeze'

Итак, опять же, похоже, что активация VE действительно меняетсяничего в моем питоне, но эта ошибка явно что-то значит. Спасибо за помощь, которую вы уже оказали.

1 Ответ

0 голосов
/ 04 ноября 2019

Из вашего описания есть 2 наблюдения.

  1. 'C: \ Users \ myname \ Desktop' - ваш главный установочный каталог Python
  2. Вы установилиnumpy в 'C: \ Users \ myname \ Desktop', а не в 'C: \ Users \ eloim \ Desktop \ Venv0 \ Scripts'

вместо использования 'python -m pip freezeпросто используйте «pip freeze». Вы увидите разницу.

To install package in your virtualenv

1. Activate virtual env and install using 'pip install <package>'

помните: это не проблема.

In your case , 
1. the keyword 'python' is creating a confusion for you. 
2. When you use python , it is considering the 'python.exe' path , rather than the directory you are in.
...