我正在使用python 3.7
处理Linux Ubuntu 18.04
,并且正在尝试从我创建的requests
导入venv
。
我所做的是安装python3.7,并通过vim ~/.bashrc
将其设置为默认值。现在,在终端中输入python -V
时,它会打印python 3.7.3
。
我还为此tutorial安装了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