没有名为' django'

时间:2018-05-08 14:48:09

标签: python django conda

在安装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!')

1 个答案:

答案 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特定的环境。