我正在尝试为一个项目设置我的环境,但是python找不到我用pip安装的模块。
我做了以下工作:
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
对我的错误之处有什么建议吗?
发布于 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的方式不同(即不抛出导入异常),那么这就是您的问题所在。
希望这能有所帮助。
发布于 2016-09-23 07:38:51
好吧,我想我找到了一个解决方案,如果不是答案的话。
--no-cache-dir选项。程序包安装成功。现在Python可以找到这个包了。derptop:environmentScience Marcus$ python
>>> from tweepy import StreamListener
>>> StreamListener
<class tweepy.streaming.StreamListener'>我检查了sys.path,它现在包含了虚拟环境中的site-packages目录,而以前它是不存在的。
sys.path的输出
['', ....'/Users/Marcus/CodeProjects/environmentScience/myenv/lib/python2.7/site-packages']据我所知,sys.path引用了错误的站点包目录。虽然我不知道为什么。我想知道是不是pips对缓存的使用导致站点包引用重置为系统。
https://stackoverflow.com/questions/39630944
复制相似问题