私は今日のgitを使って最新のコードを引っ張って、私は次のエラーました:これは、円形の輸入品とは何かを持っているかもしれません古い.pycファイルがDjangoを壊していたのはなぜですか?
ImportError at/
cannot import name Like
を。私はトレースバックを調べる:
Traceback:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
File "/Users/Desktop/python/mystuff/Project/Project/urls.py" in <module>
7. admin.autodiscover()
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/contrib/admin/__init__.py" in autodiscover
29. import_module('%s.admin' % app)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
だけのコードが、それはそれはurls.py
た問題を引き起こしている可能性があります見えました。それは、次のコードを持っていた:私は、我々が以前に書いたadmin.pyファイルが最新のマージで削除されたことがわかり、この頃そう
from django.contrib import admin
admin.autodiscover()
をしかしadmin.pycはまだ存在していること。 .pycファイルを削除すると、円形のインポートエラーが修正され、今は問題なく動作しているようです。
私の質問は次のとおりです。ここで正確に何が起こったのですか? Gitはすべてのpycファイルを無視するように設定されているので、.pyがマージされた後は、.pyが削除されても動きません。しかし、.py自体が削除された場合、.pyc内のコンパイル済みコードを呼び出さないように、Pythonは十分スマートであってはいけませんか?
削除されていることはわかりません。実際には、 'py'がない場合や' py'が古い場合は常に 'pyc'を使用しようとします。 –
これをあなたの 'root_directory/.gitignore'ファイルに追加します:' * .pyc'。 gitはPythonのバイトコードを無視するように指示します。 'pyc'をリポジトリの一部にするのは良い考えではありません。それぞれのローカル機能がそれらを編集するので、新しいモジュールを持っていない他の人にそれらをプッシュするとランタイムエラーが発生する可能性があります。 –