2012-02-27 24 views
11

Tôi đang sử dụng Linux centos.Lỗi nhập: Không có mô-đun có tên django

Tôi đã có python 2.6 với django và bây giờ tôi đã nâng cấp lên python 2.7.
Python 2.6 nằm trong /usr/lib/python2.6.
Python 2.7 nằm trong /usr/local/lib/python2.7.
Cả hai đều có thư mục gói trang web và cả hai đều chứa django 1.2.

Nếu tôi chạy python i nhận phiên bản 2.7.
Vấn đề của tôi là nếu cố gắng nhập django tôi nhận được

ImportError: No module named django

Tôi không chắc chắn nơi được PYTHONPATH tôi xác định và nếu điều này là những gì tôi cần phải thay đổi. bất kỳ ai?

tôi đã kết thúc tạo liên kết tượng trưng cho thư mục gói trang web 2.6.

Trả lời

11

Để kiểm tra đường dẫn của bạn, bạn có thể sử dụng đoạn mã sau:

import sys 
print sys.path 

Nếu bạn đã biết nơi django được cài đặt, nó phải là dễ dàng để kiểm tra xem thư mục mong muốn là trong con đường của bạn với directory in sys.path.

Về vị trí của bạn, PYTHONPATH được xác định. Lưu ý rằng đó là biến môi trường, vì vậy bạn có thể kiểm tra giá trị của nó (nếu được xác định) bằng: echo $PYTHONPATH

+2

direcroty không có trong đường dẫn nhưng direcotory mẹ - '/usr/local/lib/python2.7/site-packages' nằm trong đường dẫn, làm cách nào để thêm thư mục vào đường dẫn đó? – yossi

+0

PYTHONPATH không được định nghĩa, vậy tất cả các thư mục nằm trong sys.path được định nghĩa ở đâu? – yossi

+1

Trong trường hợp đó, python sẽ có thể tìm thấy django. Bạn đã cài đặt nó có thể là một quả trứng? – jcollado

8

Thử in sys.path để xem những gì trong đường dẫn của bạn. Django cần phải nằm trong một trong những thư mục được liệt kê. Ví dụ trên Windows:

>>> import sys 
>>> for p in sys.path: print p 

C:\Python27\Lib\idlelib 
C:\Windows\system32\python27.zip 
C:\Python27\DLLs 
C:\Python27\lib 
C:\Python27\lib\plat-win 
C:\Python27\lib\lib-tk 
C:\Python27 
C:\Python27\lib\site-packages 
>>> 
+1

làm cách nào để thêm một thư mục vào danh sách này? nếu tôi sử dụng, hãy áp dụng nó không presist – yossi

+2

Xem http://docs.python.org/tutorial/modules.html#the-module-search-path –

12

Dưới linux, bạn có thể đặt biến môi trường PYTHONPATH trong .profile hoặc .bashrc. Bạn có thể chỉnh sửa trực tiếp từ thiết bị đầu cuối bằng cách chuyển sang thư mục chính (cd ~), sau đó chỉnh sửa tệp (nano .bashrc) hoặc bằng cách mở tệp bằng gtkedit hoặc vim hoặc bất kỳ thứ gì và thêm:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:/another/path/etc 

Nếu bạn muốn kiểm tra này trước khi chỉnh sửa hồ sơ của bạn, bạn có thể xuất này từ thiết bị đầu cuối như:

export PYTHONPATH=/local/lib/python2.7/site-packages 

tôi giả sử bạn đang chạy này trực tiếp từ dòng lệnh.Nếu bạn đang chạy nó như là một mô-đun wsgi trong apache, bạn có thể thêm video này vào syspath của bạn từ file wsgi của bạn như:

import sys 
sys.path.append('/usr/local/lib/python2.7/site-packages') 
+1

Tôi nghĩ rằng dấu phân cách phải là ":" thay vì một "; " –

+0

@YannSagon Cảm ơn - đã sửa ở trên. Bán kết tràng sẽ là cho các cửa sổ, nhưng điều này là cho centos, mà sẽ sử dụng một tràng. –

8

thử

pip freeze 

lệnh show này mà gói được cài đặt trong bạn hệ thống sau đó chạy với quyền gốc

pip install django 

sau đó tạo ra một dự án mới với lệnh

django-admin.py startproject mysite 

sau đó bắt đầu dự án của bạn

cd path/to/mysite 
./manage.py runserver 

trong tập tin wsgi.py thêm dòng này

import os 
import sys 
DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..') 
sys.path.append(DJANGO_PATH) 
4

tôi đã có lỗi tương tự, và điều này khắc phục vấn đề của tôi

python -m pip install django

:) Đã xong!

+0

Điều này làm việc cho tôi - cẩn thận để xây dựng sự khác biệt về việc chạy này, như trái ngược với 'pip install django'? –

Các vấn đề liên quan