问题
i'm working on python 3.7
with Linux Ubuntu 18.04
and i'm trying to import a requests
from the venv
that i've created.
What I have done is install python3.7 and set it to the default via vim ~/.bashrc
. When I type python -V
in the terminal, it now prints python 3.7.3
.
I've also installed VirtualEnv
with this tutorial and installed the venv
to my project directory. Within the project directory, I can clearly see that the venv
as well as the other folders such as bin
, include
, lib
, share
folders have also been created. (include
folder has python3.7m added to it). (lib
/python3.7
/site-packages
also have the initial packages such as pip
, setuptools
, etc...)
What I did next was to use terminal and activate venv
with source venv/bin/activate
. From there I did a pip install requests
and I can see that it have been installed in venv
/lib
/python3.7
/site-packages
.
Problem
while venv
is still activated:
(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'
>>>
However:
>>> import os
>>> os.chdir('venv/lib/python3.7/site-packages/')
>>> import requests
>>> a = requests.get(http://www.google.com')
>>>
What is happening that I cannot do a import requests
directly?
*note: while venv
is activated, i did a pip install requests
and not a sudo pip install requests
- as it was recommended by online tutorials.
Edit
which python
inside venv: /home/tinker/jngm/Project Space/Crde/venv/bin/python
which python
outside venv: /usr/bin/python
which python3.7
outside venv: /usr/local/bin/python3.7
The below code shows the sys.path
while venv
is activated
>>> 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
来源:https://stackoverflow.com/questions/56457474/activated-venv-import-error-even-though-package-is-installed-in-the-venv