Я работаю над 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