首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块导入错误

模块导入错误
EN

Stack Overflow用户
提问于 2017-05-25 21:11:34
回答 1查看 514关注 0票数 1

我正在使用virtualenv并已激活它,并对其进行了如下测试:

代码语言:javascript
复制
source .virtualenvs/myapp/bin/activate
pip freeze

(myapp) me: redis==2.05

然后,检查redis可以导入OK:

代码语言:javascript
复制
(myapp) me: python
>>>import redis

这个还行。

但是,在运行以下命令时

代码语言:javascript
复制
(myapp) me: sudo ./manage.py database create

我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "./manage.py", line 4, in <module>
    from myapp import manager
  File "/home/me/myapp/__init__.py", line 1, in <module>
    import redis
ImportError: No module named redis

Redis显然是为virtualenv安装的,有什么可能会出错的想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 21:30:17

我怀疑sudo是原因。它没有正确地保存虚拟环境。

只需尝试创建一个shell脚本,它首先来源于环境,而不是执行python。而不是使用sudo命令运行此shell脚本:

代码语言:javascript
复制
#!/bin/sh

# ensure that working directory is right
source .virtualenvs/myapp/bin/activate
./manage.py database create

然后运行它:

代码语言:javascript
复制
$ chmod ugo+x my-startup-shell.sh
$ sudo my-startup-shell.sh

如果这样做有效,可以在sudo上做一些实验,比如可能传递-E选项来继承环境等等。

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

https://stackoverflow.com/questions/44189888

复制
相关文章

相似问题

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