親愛的兄弟, 我非常喜歡Django ORM,所以我試圖在Django Project本身之外使用它。但是當我嘗試使用它時,我遇到了一個問題。 這裏是我的Mac上我的文件結構:嘗試在Django之外使用ORM時出現「ImportError:No module named xxx」
testORM
|-- orm
|-- __init__.py
|-- models.py
|-- manage.py
|-- settings.py
|-- test.py
這裏是我最簡單的代碼:
models.py:
from django.db import models
class test(models.Model):
name = models.CharField(max_length=50)
class Meta:
db_table='test'
app_label='orm'
manage.py:
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'Portal', # Or path to database file if using sqlite3.
'USER': 'postgres', # Not used with sqlite3.
'PASSWORD': 'Cloud', # Not used with sqlite3.
'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '5432', # Set to empty string for default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/Chicago'
INSTALLED_APPS = (
'orm',
)
test.py:
import sys
sys.path.append('/Users/wally/Documents/workspace/testORM')
sys.path.append('/Users/wally/Documents/workspace/testORM/orm')
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import setup_environ
import settings
setup_environ(settings)
這裏是我,當我試圖從日食執行test.py:
Traceback (most recent call last):
File "/Users/wally/Documents/workspace/testORM/test.py", line 14, in <module>
setup_environ(settings)
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 433, in setup_environ
import_module(project_name)
File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named testORM
但是,當我嘗試執行
python manage.py shell
from django.db import connection
cursor = connection.cursor()
他們都在工作f ine從命令行!即使當我創建模型的對象並保存數據也可以正常工作時,通過外殼一切正常。
- 但我不明白爲什麼它不工作,當我試圖從test.py執行 他們。我只是沒有開始在test.py中做任何事情, 只是導入設置。
- 我搜索了網頁,有人通過將項目路徑添加到「sys.path」, 來解決問題,正如您所看到的,我是這樣做的,添加了硬編碼的完整路徑。但還是不行...
- 有人能遇到這種情況嗎?我非常感謝,如果有人 可以幫助。感謝advace。
- 注:我用我的Mac上(v10.8)python2.7和Django1.4
試過添加一個sys.path.append('/ Users/wally/Documents/workspace')? – Aea
我剛剛嘗試過,仍然不工作:( –
腳本是否運行與您在命令行中鍵入'python'相同的python? –