Python ImportError在virtualenv解释器中运行源代码,但在控制台中尝试直接导入时不运行
我正在使用virtualenv设置python环境以运行一些脚本。当我运行脚本时,我只得到了我的一个包的导入错误-gdata 我可以在控制台中手动激活我的virtualenv,进入解释器交互模式,并在其中成功导入gdata模块,不会出错。但是,当我从虚拟环境中运行一个脚本(它导入完全相同的模块)时,我得到了Python ImportError在virtualenv解释器中运行源代码,但在控制台中尝试直接导入时不运行,python,bash,virtualenv,gdata,importerror,Python,Bash,Virtualenv,Gdata,Importerror,我正在使用virtualenv设置python环境以运行一些脚本。当我运行脚本时,我只得到了我的一个包的导入错误-gdata 我可以在控制台中手动激活我的virtualenv,进入解释器交互模式,并在其中成功导入gdata模块,不会出错。但是,当我从虚拟环境中运行一个脚本(它导入完全相同的模块)时,我得到了ImportError Traceback (most recent call last): File ".../src/writer/gdata.py", line 4, in <
ImportError
Traceback (most recent call last):
File ".../src/writer/gdata.py", line 4, in <module>
from gdata.docs.client import DocsClient
ImportError: No module named docs.client
下面是我运行的主要bash脚本,用于激活virtualenv并运行引发错误的脚本:
#!/bin/bash
set -e
python env-setup.py
echo "Setup has run"
python env-bootstrap.py $HOME/virtualenv/my-virtualenv/ --verbose
echo "Bootstrap has run"
echo `which python`
source $HOME/virtualenv/my-virtualenv/bin/activate
echo "Virtualenv activated"
echo `which python`
python src/main.py
deactivate
我正在使用哪种python来确保在激活virtualenv之后,解释器的正确版本确实被使用了——这也可以通过我没有收到pandas或numpy的导入错误这一事实得到证实
关于如何解决问题有什么想法吗?显然,您在
src/writer/gdata.py
中有一个自己的gdata
模块,Python认为这是您正在寻找的gdata
,而不是您安装到VirtualNV中的包。尝试将您的gdata.py
重命名为其他名称。Oooooooooh!!!!真不敢相信我竟然没想到。现在看来很明显。非常感谢。
#!/bin/bash
set -e
python env-setup.py
echo "Setup has run"
python env-bootstrap.py $HOME/virtualenv/my-virtualenv/ --verbose
echo "Bootstrap has run"
echo `which python`
source $HOME/virtualenv/my-virtualenv/bin/activate
echo "Virtualenv activated"
echo `which python`
python src/main.py
deactivate