активированный venv - ошибка импорта, даже если пакет установлен в venv - PullRequest
1 голос
/ 05 июня 2019

Я работаю над python 3.7 с Linux Ubuntu 18.04, и я пытаюсь импортировать requests из venv, который я создал.

Что я сделал, так это установил python3.7 и установил его по умолчанию через vim ~/.bashrc. Когда я набираю python -V в терминале, он теперь печатает python 3.7.3.

Я также установил VirtualEnv с этим учебным пособием и установил venv в каталог моего проекта. В каталоге проекта я ясно вижу, что также были созданы папки venv и другие папки, такие как bin, include, lib, share. (В папку include добавлен python3.7m). (lib / python3.7 / site-packages также имеют начальные пакеты, такие как pip, setuptools и т. Д ...)

Затем я использовал терминал и активировал venv с помощью source venv/bin/activate. Оттуда я сделал pip install requests, и я вижу, что он был установлен в venv / lib / python3.7 / site-packages.

Проблема

пока venv все еще активировано:

(venv) tinker@tinkerboard:~/jngm/Project Space/Crde$ python
Python 3.7.3 (default, Jun  5 2019, 14:36:28) 
[GCC 7.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'requests'
>>> 

Однако :

>>> import os
>>> os.chdir('venv/lib/python3.7/site-packages/')
>>> import requests
>>> a = requests.get(http://www.google.com')
>>>

Что происходит, что я не могу сделать import requests напрямую?

* примечание: пока venv активирован, я сделал pip install requests, а не sudo pip install requests - как было рекомендовано в онлайн-уроках.

Редактировать

which python внутри venv: /home/tinker/jngm/Project Space/Crde/venv/bin/python

which python снаружи venv: /usr/bin/python

which python3.7 снаружи venv: /usr/local/bin/python3.7

Приведенный ниже код показывает sys.path, пока venv активирован

>>> import sys
>>> print(sys.path)
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> 

# while `venv` is activated:
>>> echo $PATH
>>> /home/tinker/jngm/Project Space/Crde/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
...