2016-05-09 25 views
0

私のPythonスクリプト(エラーを示すPyCharm - "未解決の参照 '登録')に '登録'アプリケーションをインポートする際に問題が発生します。 Django-registration-reduxがインストールされています。 urls.pyから。私は自分のアプリにも問題がありますが、これは決して問題はありませんでした。以下ではurls.pyuser_profileも認識されません。どのようにフォルダのレベルを下げるのではなく上に移動するのですか?私が知っているのは、フォルダに入る場合、すべてのフォルダにドットを含めます。ですが、どうやって元に戻りますか?これはおそらくこのケースとは関係ありませんが、一般的には該当しません。これは私のプロジェクトのレイアウトです:Python/Djangoでアプリケーションを読み込む際の問題

|--'project' 
| |--'Lib' 
| | |--'site-packages' 
| | | |--'registration' 
| |--'src' 
| | |--'proj' 
| | | |-- settings.py 
| | | |-- urls.py 
| | |--'user_profile' 
| | | |-- forms.py 

urls.py

from django.conf import settings 
from django.conf.urls import url, include 
from django.conf.urls.static import static 
from django.contrib import admin 
import user_profile.views as views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', views.home), 
    url(r'^accounts/', include('registration.backends.default.urls')), 
] 

forms.py

from registration.forms import RegistrationFormUniqueEmail 
from django import forms 

class UserProfileRegistrationForm(RegistrationFormUniqueEmail): 
    field = forms.CharField() 

settings.py

import os 

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

     INS 

TALLED_APPS = [ 
     'django.contrib.admin', 
     'django.contrib.auth', 
     'django.contrib.contenttypes', 
     'django.contrib.sessions', 
     'django.contrib.sites', # manually added 
     'django.contrib.messages', 
     'django.contrib.staticfiles', 
     # third party apps 
     'crispy_forms', 
     'debug_toolbar', 
     # my apps 
     'user_profile', 
     'registration', 
    ] 
+0

はい私はvirtualenvを使用しています – Curtis

答えて

3

PyCharmでは、File -> Settingsにアクセスしてください。左側のタブでProject: <your_project_name> -> Project Interpreterを選択し、virtualenvのパスを選択します。 PyCharmがあなたのvirtualenvにインストールされているパッケージを認識するようにする必要があります。独自のアプリケーションでの問題については

、相対的および絶対的輸入の長所と短所についてthere is a nice thread

+0

大変ありがとうございました、私は一緒に微調整しなければならなかったPyCharmの設定でした! – Curtis

2

戻ってくる「どこにいても」いないので、「戻る」しないでください。

PythonはPYTHONPATH環境変数を使用して、どこからインポートするかを決定します。 virtualenvはrootとsite-packagesディレクトリを自動的にその変数に入れます。 virtualenvが "project"ディレクトリの場合は、おそらくfrom src.user_profile import viewsを実行する必要があります。

+0

私はそこに来ているようです - 'from project.src.user_profile import views'。したがって、 'user_profile'が解決されます。しかし、私は「登録」を参照するために同じアプローチを使用することはできません。 Pythonは 'site-packages'が好きではないようです。たぶんダッシュ記号でしょうか?これらのアプリケーションに余分な参照なしでアクセスするにはどうすればいいですか? 'settings.py'を変更して、' from user_profile import views'と 'import registration'と言うだけでいいですか?長いコメントを申し訳ありません! – Curtis

+0

私が言ったように、site-packagesはあなたのpythonパス上にあるので、 'from registration import ...'をするだけです。 –

0

「相対インポート」と呼ばれるものを使用できます。あなたのform.pyから設定にアクセスする必要があるとすれば、これは可能です

import from ..settings import YOUR_SETTING 

希望します。

関連する問題