首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python无法在虚拟环境中找到包

Python无法在虚拟环境中找到包
EN

Stack Overflow用户
提问于 2016-09-22 13:30:37
回答 2查看 13.6K关注 0票数 2

我正在尝试为一个项目设置我的环境,但是python找不到我用pip安装的模块。

我做了以下工作:

代码语言:javascript
复制
mkdir helloTwitter
cd helloTwitter
virtualenv myenv
Installing setuptools, pip, wheel...done.
source myenv/bin/activate

pip install tweepy
Collecting tweepy
  Using cached tweepy-3.5.0-py2.py3-none-any.whl
Collecting six>=1.7.3 (from tweepy)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting requests>=2.4.3 (from tweepy)
  Using cached requests-2.11.1-py2.py3-none-any.whl
Collecting requests-oauthlib>=0.4.1 (from tweepy)
  Using cached requests_oauthlib-0.6.2-py2.py3-none-any.whl
Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.4.1->tweepy)
Installing collected packages: six, requests, oauthlib, requests-oauthlib, tweepy
Successfully installed oauthlib-2.0.0 requests-2.11.1 requests-oauthlib-0.6.2 six-1.10.0 tweepy-3.5.0

当我尝试导入模块时,它显示找不到该模块。

$PATH中的第一个条目是helloTwitter/myenv/bin,所有的包都显示在环境站点包目录中。我似乎用对了python和pip。哪个python输出helloTwitter/myenv/bin/python,哪个pip输出helloTwitter/myenv/bin/pip

对我的错误之处有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-09-22 13:56:46

看起来你正在手动设置你的$PATH指向你的虚拟环境。myenv/bin/activate脚本的全部目的就是为您解决这个问题。

一旦激活了虚拟环境,使用pip安装的任何包都将放在相关的venv site-packages目录中(在本例中为myenv/lib/python2.7/site-packages)。当你在虚拟环境中工作时,像pip --user这样的东西是不必要的(假设是默认行为)。这都是自动的。

运行activate之后,您可以检查与find -iname tweepy一起使用的Python二进制文件。

别名也会导致问题。which是一个外部命令,并不总是接受这些命令。一个type -a python会把这些都清除掉。

可以通过直接运行helloTwitter/myenv/bin/python -c 'import tweepy'来进行快速测试。如果这与您当前运行python的方式不同(即不抛出导入异常),那么这就是您的问题所在。

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2016-09-23 07:38:51

好吧,我想我找到了一个解决方案,如果不是答案的话。

  1. I卸载了包,并确保它不在系统或用户中。
  2. I重新创建了虚拟环境。
  3. 我检查了环境python和pip是否正在使用。
  4. 这次在安装我的软件包时,我添加了--no-cache-dir选项。程序包安装成功。现在Python可以找到这个包了。

代码语言:javascript
复制
derptop:environmentScience Marcus$ python 
>>> from tweepy import StreamListener 
>>> StreamListener 
<class tweepy.streaming.StreamListener'>

我检查了sys.path,它现在包含了虚拟环境中的site-packages目录,而以前它是不存在的。

sys.path的输出

代码语言:javascript
复制
['', ....'/Users/Marcus/CodeProjects/environmentScience/myenv/lib/python2.7/site-packages']

据我所知,sys.path引用了错误的站点包目录。虽然我不知道为什么。我想知道是不是pips对缓存的使用导致站点包引用重置为系统。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39630944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档