激活的venv-即使在venv中安装了软件包,导入错误

时间:2019-06-05 09:10:45

标签: python linux python-venv

我正在使用python 3.7处理Linux Ubuntu 18.04,并且正在尝试从我创建的requests导入venv

我所做的是安装python3.7,并通过vim ~/.bashrc将其设置为默认值。现在,在终端中输入python -V时,它会打印python 3.7.3

我还为此tutorial安装了VirtualEnv并将venv安装到了我的项目目录中。在项目目录中,我可以清楚地看到venv以及其他文件夹,例如binincludelibshare文件夹被创建。 (include文件夹中添加了python3.7m)。 ({lib / python3.7 / site-packages也具有初始软件包,例如pipsetuptools等...)

接下来我要做的是使用终端并用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

0 个答案:

没有答案