2017-07-29 125 views
1

運行Python3.6.2。我在process_sqs_messages.py代碼,以便線路3:ModuleNotFoundError:沒有名爲'xyz'的模塊

​​

這裏是我的堆棧跟蹤:

Traceback (most recent call last): 
File "bin/process_sqs_messages.py", line 3, in <module> 
    from xyz.settings import SQS_QUEUE_NAME 
ModuleNotFoundError: No module named 'xyz' 

目錄結構:

Project 
|  
+-- bin 
| | 
| +-- process_sqs_messages.py 
|  
+-- xyz 
| | 
| +-- __init__.py 
| +-- settings.py 

我安裝的應用程序:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'xyz', 
] 

任何人都知道我爲什麼g解決這個錯誤?

+0

你有沒有嘗試過做'蟒蛇manage.py shell'和'進口xyz'?這可能會提供一些線索。 – FlipperPA

+0

運行'''python manage.py shell'''產生這個錯誤 '''django.core.exceptions.ImproperlyConfigured:請求的設置USE_I18N,但設置沒有配置。你必須定義環境變量DJANGO_SETTINGS_MODULE或在訪問設置前調用settings.configure()。 因此,我將export DJANGO_SETTINGS_MODULE =「xyz.settings」'''添加到我的virtualenv bin/activate文件中修復了錯誤,但原始錯誤仍然存​​在。 – Chris

+0

run'''python manage.py shell'''然後''import xyz''',它運行良好,但在shell之外不工作...仍然找不到我的xyz模塊 – Chris

回答

0

Django docs

Note that django.conf.settings isn’t a module – it’s an object. So importing individual settings is not possible

from django.conf.settings import DEBUG # This won't work. 

你必須進入設置模塊這樣

from django.conf import settings 

    if settings.DEBUG: 
     # Do something 
+0

不,同樣的發生錯誤。我確定這條規則適用,但我的xyz是一個帶'''__init __。py'''的應用程序。 – Chris

0

我得到它的工作,但我不知道爲什麼。希望有人能澄清一些問題。我正在瀏覽網頁,試圖解決這個錯誤,這是我所做的/發現的。

我第一次創建在項目級別一個setup.py文件,所以

Project 
|  
+-- setup.py 

我加入這個代碼的setup.py文件

#!/usr/bin/env python 

from distutils.core import setup 

setup(name='xyz', 
    version='0.1.0', 
    description='XYZ', 
    author='Chris', 
    author_email='[email protected]', 
    url='http://www.none.com/', 
    packages=['xyz', ], 
) 

我然後跑python setup.py install和(這裏的在那裏我迷路了)它安裝了這個軟件包。它創建了一個構建目錄,蛋信息,我的virtualenv下的網站包等。

最後我跑我的命令python bin/process_sqs_messages.py,它成功了。沒有錯誤。

如果你能幫助我和其他人,請評論/解釋我做了什麼,因爲我不能:/

+0

這聽起來像我的'PYTHON_PATH'中的東西沒有點擊。使用該命令運行'python setup.py install'後,它會將'xyz'軟件包添加到'virtualenv'的站點軟件包目錄中。我猜如果你改變Django項目中的'xyz'應用程序,這些更改將不會被反映出來。首先,我會檢查'PYTHON_PATH'的值,然後嘗試刪除並重新創建'virtualenv'? – FlipperPA

相關問題