在安装Django之前,我使用conda
安装了虚拟环境。激活我的虚拟环境后安装了django pip install django
。当我在控制台上点击python时,导入python后没有错误。但是,当我运行python pop_script.py
时,我得到了
(MyDjangoEnv) MacBook-Pro:firstProject eLmaesTro$ python pop_script.py
Traceback (most recent call last):
File "pop_script.py", line 4, in <module>
import django
ModuleNotFoundError: No module named 'django'
我无法执行此文件。
这是文件的代码。 (的 pop_script.py )
import os
os.environ.setdefault('DJANGO_SETTINGS_VALUE','firstProject.settings')
import django
django.setup()
# FAKE POP SCRIPT
import random
from firstApp.models import Topic,Webpage,AccessRecord
from faker import Faker
fakegen = Faker()
topics = ['Search','Social','Marketplace','News','Games']
def add_topic():
t = Topic.objects.get_or_create(top_name=random.choice(topics))[0]
t.save()
return t
def populate(N=5):
for entry in range(N):
# get the topic
top = add_topic()
# create the fake data for that entry
fake_url = fakegen.url()
fake_date = fakegen.time()
fake_name = fakegen.company()
# create the new webpage entry
webpg = Webpage.objects.get_or_create(topic=top,url=fake_url,name=fake_name)[0]
# create a fake access record for that webpage
acc_rec = AccessRecord.objects.get_or_create(name=webpg,date=fake_date)[0]
if __name__ == '__main__':
print('populating script!')
populate(20)
print('population complete!')
答案 0 :(得分:0)
确保MyDjangoEnv/lib/python2.7/site-packages/
包含文件夹django。如果没有,则表示它未安装在您的环境中
如果您在conda环境下使用pip命令安装它,如this issue中所述:
conda install pip
然后它看起来是在根python site-packages文件夹中安装软件包,而不是在环境中。发布问题后:
当我首先创建一个空的conda env并激活它时,会出现问题。然后我conda安装pip。在同一个激活的env中,如果我使用pip install,它将安装到全局目录。 env已激活,但conda安装正常。
如果我在创建它时将pip添加到env,则不会发生这种情况。这就是问题所在。
因此,删除conda环境并重新安装它,但这次在创建conda env时添加pip。类似的东西:
conda create -n env pip
我希望它有所帮助!
<强>更新强>
在您的评论中出现错误后,您的代码看起来很不错。这是一个conda环境问题。可能不服从os.environ.setdefault
。在conda docs中,它显示了在conda env中添加环境变量的方法:
anaconda-project add-variable --default='firstProject.settings' DJANGO_SETTINGS_VALUE
在启动时查看this问题以设置环境。尝试检查os.environ中设置的值:
os.environ.setdefault('DJANGO_SETTINGS_VALUE','firstProject.settings')
print os.getenv('DJANGO_SETTINGS_VALUE')
django.setup()
如果是this,请在使用conda之前重置PYTHONPATH。{
看起来在你的情况下,os.environ
是Conda的托管环境,所以尝试使用coda特定的环境。