27

私はcentos Linuxを使用しています。

私はdjangoでpython 2.6を持っていましたが、今はpython 2.7にアップグレードしました。
Python 2.6 は /usr/lib/python2.6 にあります。
Python 2.7 は /usr/local/lib/python2.7 にあります。
どちらにも site-packages ディレクトリがあり、どちらにも django 1.2 が含まれています。

Python を実行すると、2.7 バージョンが取得されます。
私の問題は、djangoをインポートしようとすると、

ImportError: django という名前のモジュールがありません

PYTHONPATH がどこで定義されているのか、これを変更する必要があるのか​​ わかりません。誰でも ?

最終的に、2.6 サイト パッケージ ディレクトリへのシンボリック リンクを作成しました。

4

8 に答える 8

19

パスを確認するには、次のコードを使用できます。

import sys     
print(sys.path)

django がインストールされている場所が既にわかっている場合は、目的のディレクトリがパスにあるかどうかを簡単にテストできますdirectory in sys.path

yourPYTHONPATHが定義されている場所については、環境変数であるため、その値 (定義されている場合) を次のように確認できます。echo $PYTHONPATH

于 2012-02-27T08:53:51.573 に答える
16

Linux では、.profile または .bashrc で PYTHONPATH 環境変数を設定できます。ホームディレクトリに移動して端末から直接編集し(cd〜)、ファイルを編集するか(nano .bashrc)、またはgtkeditまたはvimなどでファイルを開いて追加します。

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

プロファイルを編集する前にこれをテストしたい場合は、ターミナルから次のようにエクスポートできます。

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

これをコマンドラインから直接実行していると仮定しています。Apache で wsgi モジュールとして実行している場合は、これを wsgi ファイルから syspath に次のように追加できます。

import sys
sys.path.append('/usr/local/lib/python2.7/site-packages')
于 2012-02-27T09:08:05.307 に答える
13

試す

pip freeze

このコマンドは、システムにインストールされているパッケージを表示し、root 権限で実行します

pip install django

次に、コマンドで新しいプロジェクトを作成します

django-admin.py startproject mysite

次に、プロジェクトを開始します

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

ファイル wsgi.py にこの行を追加します

import os
import sys
DJANGO_PATH =  os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
于 2016-04-30T08:25:47.207 に答える
11

印刷sys.pathして、パスの内容を確認してください。Django は、リストされているディレクトリのいずれかにある必要があります。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
>>> 
于 2012-02-27T08:56:57.293 に答える
2

Python 3.7へのアップグレードでdjangoが行方不明になりました

pip3 install django

問題を修正しました。

于 2020-08-07T15:10:19.513 に答える