Błąd importowania django - Brak modułu o nazwie core.management

187

Ok, widzę wiele takich błędów. Próbowałem wszystkiego, co wiem, i jeszcze tego nie rozgryzłem.

Pracuję na serwerze programistycznym z systemem Python 2.5 i Django 1.3. Django 1.3 został zainstalowany przy użyciu instalacji python setup.py po rozpakowaniu pliku tar.gz.

Wszystko działa dobrze, rzadko muszę uruchamiać, manage.pyale próbuję użyć nowej aplikacji staticfiles i mam problemy.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named core.management

Ok, więc mam PATH problem.

Z instalacji Django sprawdzam dwukrotnie mój site-packageskatalog.

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.5/site-packages

Ok, sprawdźmy co mam, echo $ PYTHON_PATH było puste, więc ustawiłem

export PYTHON_PATH=/usr/lib/python2.5/site-packages/django

Wciąż nie ma szczęścia. Pozwala sprawdzić, co ma do powiedzenia sys.path

>>> import sys
>>> print sys.path
['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/PIL', '/usr/lib/python2.5/site-packages/django', '/var/lib/python-support/python2.5']

ścieżka tam jest, nawet stworzyłem /usr/lib/python2.5/site-packages/django.pth z zawartością

cat /usr/lib/python2.5/site-packages/django.pth 
/usr/lib/python2.5/site-packages/django/

Czy ktoś ma jakieś wskazówki na temat tego, co się tutaj dzieje?

Znalazłem dowiązanie symboliczne na ścieżce, która przeszkadzała, ale nie do nowego błędu.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 349, in execute
    version=get_version(),
  File "/usr/lib/python2.5/site-packages/django/__init__.py", line 12, in get_version
    from django.utils.version import get_svn_revision
ImportError: No module named utils.version

Próbowałem także utworzyć nowy projekt, aby sprawdzić, czy są jakieś problemy i uzyskać ten sam błąd utils.version.

Węzeł boczny: Unode z #django trochę mi pomógł, skonfigurowałem virtualenv na tej samej maszynie i ominąłem błędy, więc wciąż nie jestem pewien, co jest grane z tą rzeczywistą instalacją tutaj, ale wydaje się, że nie jest to w projektach django, ale w django / python install.

grantk
źródło
1
Co się stanie, gdy wpiszesz import djangow powłokę Pythona?
silent1mezzo
@ silent1mezzo - Ahh zapomniałem to wrzucić, żadnych skarg od powłoki pytona na import django
grantk
1
Biegałeś python manage.py syncdb?
silent1mezzo
@silentmezzo - Nie na tym komputerze, zrobiłem to na mojej osobistej maszynie przed przeniesieniem projektu.
grantk
Najpierw spróbuj go uruchomić. Może to czasami powodować błąd.
silent1mezzo

Odpowiedzi:

169

Jeśli, podobnie jak ja, uruchamiasz django w virtualenv i otrzymujesz ten błąd, spójrz na swój manage.py. Pierwszy wiersz powinien definiować plik wykonywalny Pythona używany do uruchomienia skryptu. Powinna to być ścieżka do Pythona virtualenv, ale jest to coś złego, takiego jak / usr / bin / python, która nie jest tą samą ścieżką i będzie używać globalnego środowiska python (i pakietów będzie brakować). Po prostu zmień ścieżkę na ścieżkę do pliku wykonywalnego Pythona w swoim virtualenv.

Możesz również zastąpić swoją linię shebang #!/usr/bin/env python. To powinno korzystać z odpowiedniego środowiska Pythona i interpretera, pod warunkiem, że najpierw aktywujesz virtualenv (zakładam, że wiesz, jak to zrobić).

Steve K.
źródło
27
lub biegnij jak<path-to-my-env>/bin/python manage.py runserver
geekQ,
Dobrze zauważony! To był dokładnie problem!
kstratis
7
Ponadto, er ... pamiętaj, aby aktywować virtualenv. Nie!
Alex Mcp,
W każdym razie możesz podać przykład ścieżki do pliku wykonywalnego Pythona w virtualenv. Na przykład moja ścieżka do mojej wirtualnej env to / Users / Chris / virtualenv / my_first_venv i zrobiłem pierwszą linię #! / Users / Chris / virtualenv / my_first_venv /, ale wciąż pojawia się ten sam błąd. Myślę, że robię coś złego z shebangiem ...
Chris
Być może zapomniałeś dodać plik wykonywalny Pythona na końcu ścieżki: #!/Users/Chris/virtualenv/my_first_venv/bin/pythonczy coś w tym stylu?
Steve K
40

Jeśli jesteś w virtualenv, musisz go aktywować, zanim będziesz mógł uruchomić ./manage.py 'command'

source path/to/your/virtualenv/bin/activate

jeśli skonfigurujesz workon w .bash_profile lub .bashrc

workon yourvirtualenvname

* Proszę nie edytować pliku manage.py. Może działa nieprawidłowo i może powodować błędy w przyszłości

elin3t
źródło
Zrobiło to również dla mnie po spaleniu połowy nocy walczącej o to, aby zadziałało. Dziękuję bardzo @ elin3t.
Yax,
30

Miałem ten sam problem, ponieważ instalowałem Django jako superużytkownik, a więc nie w mojej virtualenv. Nie powinieneś tego robićsudo pip install Django

Zamiast tego zainstaluj go w ten sposób:

$ source ./bin/activate
$ pip install Django
aviggiano
źródło
Ale bez sudo otrzymujesz: OSError: [Errno 13] Odmowa dostępu: '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django'
malhal
15

Zainstaluj ponownie django z pipem:

sudo pip install --upgrade django==1.3

(Zastąp 1.3 do swojej wersji django)

satelity
źródło
25
Niepolecane. Użycie sudodo instalacji w katalogach systemowych będzie kolidować z pakietami natywnymi i najprawdopodobniej zepsuje przynajmniej niektóre części instalacji Pythona. Polecam virtualenv.
Noufal Ibrahim
11

Jak wiadomo, był to problem ze ścieżką.

podstawa moich niestandardowych pakietów współdzieliła nazwę z katalogiem ustawionym w / etc / profile. Pakiety znajdowały się jednak w innym miejscu dla serwera WWW. Więc usunąłem nieprzyzwoite wpisy z mojego $ PYTHONPATH i byłem gotowy!

Dzięki za pomoc.

grantk
źródło
10

Innym możliwym powodem tego problemu jest to, że system operacyjny domyślnie uruchamia Python3.

Albo musisz jawnie zrobić: python2 manage.py

lub musisz edytować shebang manage.py, w ten sposób:

#!/usr/bin/env python2

lub jeśli używasz python3:

#!/usr/bin/env python3
orzechy
źródło
dla mnie musiałem to zrobić#!/usr/bin/env python2.7
Vic
8

Miałem ten błąd podczas próby uruchomienia systemu osadzonego (oczywiście przy użyciu Django) na Raspberry Pi 2 (a nie na maszynie wirtualnej) )

Uruchamianie tego:

 sudo pip install Django

Udało się!

  • na wypadek, gdyby dostał to ktoś korzystający z Raspbian / Jessie
d1jhoni1b
źródło
6

Prawdopodobnie używasz virtualenvwrapper . Nie zapomnij wybrać środowiska, uruchamiając:

$ workon env_name
MK
źródło
4

Dla mnie mój serwer używał Pythona 2.4. Po prostu sprawdziłem Python 2.7, który został zainstalowany na moim serwerze, i utworzyłem alias.

alias python=python2.7

Jeśli chcesz dowiedzieć się więcej, znalazłem rozwiązanie tutaj

el_stack
źródło
4

Ten sam problem występował podczas próby utworzenia nowej aplikacji. Jeśli piszesz python manage.py startapp myapp, szuka usr / bin / python. Ale potrzebujesz tego „ python ”, który znajduje się w katalogu / bin Twojej wirtualnej ścieżki env . Rozwiązałem to, wymieniając ścieżkę python virtualenv w następujący sposób:

<env path>/bin/python manage.py startapp myapp
Tarique
źródło
3

Spróbuj zmienić pierwszą linię manage.py.

Zmiana

#!/usr/bin/python

przez

#!/usr/bin/env python
Gabriel Cavalcante
źródło
3
Rewers pomógł mi. Zastąpiony #!/usr/bin/env pythonprzez#!/usr/bin/python
curlyreggie
env jest powszechnym binem unixowym, aby uzyskać linki bin środowiska OS, w zależności od konfiguracji systemu operacyjnego lub instalacji Pythona bin może znajdować się w innej ścieżce niż / usr / bin /, a twoje rozwiązanie nie będzie działać, również nie będzie działać, jeśli bin 'env' jest zainstalowany w innym miejscu.
Gabriel Cavalcante
3
python3 manage.py runserver

Sprawdź wersję Pythona

sim
źródło
3

Rozwiązałem to!!!

Po wyszukaniu wieku i wypróbowaniu wszystkich innych sugestii, które nie działały, w końcu znalazłem rozwiązanie dla mojej konfiguracji.

Moja konfiguracja / scenariusz:

  • Windows, Python27
  • Mój projekt django jest wyewidencjonowany przez svn
  • podczas uruchamiania Python manage.py runserver w nowym folderze wystąpił błąd importu
  • Python manage.py runserver pracował w oryginalnym folderze (z którego dokonywałbym zmian), dopóki go nie usunąłem

Rozwiązanie

Usuń folder o nazwie django z tego samego katalogu manage.py

To prawda ... jak tylko usunąłem folder „django”, który zawierał tylko plik __init__.py ... mogłem ponownie uruchomić serwer!

Nie mam pojęcia, dlaczego

Dan
źródło
Ponieważ folder z plikiem __init__.py jest traktowany jako moduł python . Więc nie powinieneś nazywać domyślnego katalogu modułów django
kaushal agrawal
2

Przechowuj ścieżkę Pythona w zmiennej i wykonaj. Obejmuje to w przeciwnym razie brakujące pakiety.

python_path= `which python` 
$python_path manage.py runserver
Nischay Gulati
źródło
1

Miałem podobny problem. PyCharm nie mógł uruchomić serwera, ale mogłem uruchomić go z wiersza poleceń. Próbowałem, który python, a następnie upewniłem się, że PyCharm był tym samym tłumaczem, a potem wszystko działało OK.

Trip Denton
źródło
1

Ten błąd występuje zwykle, gdy django nie jest zainstalowany. Jeśli masz już zainstalowany django, ale nadal pojawia się ten sam błąd, musisz pracować w osobnym środowisku wirtualnym. Musisz także zainstalować django w swoim wirtualnym środowisku. Gdy jesteś w powłoce maszyny wirtualnej, po prostu zrób to:

pip zainstaluj django

Jest tak, ponieważ maszyna wirtualna ma osobny system plików, nie rozpoznaje django, nawet jeśli jest zainstalowane w systemie.

Rai Ammad Khan
źródło
1

Rozwiązałem ten problem, zmieniając #PATH = "$ VIRTUAL_ENV / bin: $ PATH" na PATH = "$ PATH: $ VIRTUAL_ENV / bin" Z powodów, które nie są dla mnie oczywiste, plik wykonywalny Pythona w katalogu virtualenv nie widzi django, ale normalnie Zainstalowany Python robi.

Lowlysquib
źródło
1

================================== ROZWIĄZANIE =============== ==========================

Pierwsze goto: virtualenv

uruchamiając polecenie: bin źródłowy / aktywuj

i zainstaluj django, ponieważ pojawia się błąd związany z „importowaniem django”:

pip install django

Następnie uruchomić:

python manage.py runserver

(Uwaga: zmień „runserver” na nazwę programu, który chcesz uruchomić)

W przypadku tego samego problemu zadziałało w moim przypadku. ================================== Streszczenie =============== ==========================

ERROR:
(Development) Rakeshs-MacBook-Pro:src rakesh$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Podczas obsługi powyższego wyjątku wystąpił inny wyjątek:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ python -Wall manage.py test
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

Podczas obsługi powyższego wyjątku wystąpił inny wyjątek:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Podczas obsługi powyższego wyjątku wystąpił inny wyjątek:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

PO INSTALACJI django:

(Development) MacBook-Pro:src rakesh$ pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/51/1a/e0ac7886c7123a03814178d7517dc822af0fe51a72e1a6bff26153103322/Django-2.1-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 1.1MB/s 
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 4.7MB/s 
Installing collected packages: pytz, django

PO ROZWIĄZANIU:

(Development) MacBook-Pro:src rakesh$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

August 05, 2018 - 04:39:02
Django version 2.1, using settings 'trydjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[05/Aug/2018 04:39:15] "GET / HTTP/1.1" 200 16348
[05/Aug/2018 04:39:15] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 82564
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 81348
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 80304
Not Found: /favicon.ico
[05/Aug/2018 04:39:16] "GET /favicon.ico HTTP/1.1" 404 1976

Powodzenia!!

Rakesh Kumar
źródło
0

Twój projekt jest tworzony przy użyciu starej wersji pliku django-admin.py, starszej niż django 1.3

aby to naprawić, utwórz kolejny projekt django, skopiuj plik manage.py i wklej go do starego

MBarsi
źródło
@dontario. Nie ten, stworzyłem ten projekt na moim komputerze osobistym z systemem 1.3.0 wersja ostateczna. Czy istnieje kilka zaimportowanych projektów, które zostały utworzone przy użyciu starszej wersji?
grantk
Próbowałem skopiować mój nowy plik mange.py z nowej aplikacji do starej aplikacji, która jest również używana i nadal pojawia się ten sam błąd.
grantk
0

Zgadzam się całkowicie, że jest to problem ze ścieżką, ale fwiw, miałem ten sam błąd. Było to spowodowane błędem użycia ścieżki względnej dla mojego pliku wykonywalnego Python podczas konfigurowania środowiska wirtualnego. Zrobiłem to:

virtualenv -p ~/python_runtimes/2.7.3/bin/python venv2.7.3 --distribute

Zamiast tego musiałem podać pełną ścieżkę do pliku wykonywalnego Python.

HTH, Harlin

Harlin
źródło
0

źródło ~ / blog-venv / bin / aktywuj

wybierz virtualenv, aby zastąpić „blog-venv” tutaj.

windmaomao
źródło
Dzięki, że rozwiązałem mój problem w odniesieniu do tego:File "manage.py", line 8, in <module> from django.core.management import execute_from_ ImportError: No module named django.core.management
Shailen
0

Upewnij się, że korzystasz z właściwej instancji Pythona z właściwymi katalogami na ścieżce. W moim przypadku ten błąd wynikał z przypadkowego uruchomienia pythonpliku wykonywalnego - faktycznie zainstalowałem Django w python2.7ramach i bibliotekach. To samo może się zdarzyć również w wyniku virtualenv.

Chris Johnson
źródło
0

Okej, więc wygląda to tak:

Stworzyłeś środowisko wirtualne, a moduł django należy tylko do tego środowiska. Ponieważ virtualenv izoluje się od wszystkiego innego, stąd to widzisz.

przejdź przez to, aby uzyskać dalszą pomoc:

http://www.swegler.com/becky/blog/2011/08/27/python-django-mysql-on-windows-7-part-i-getting-started/

1. Możesz przejść do katalogu, w którym przechowywane jest środowisko wirtualne, a następnie uruchomić moduł django.

2. Alternatywnie możesz zainstalować django globalnie w swoich pakietach python-> site, uruchamiając pip lub easy_install

Polecenie za pomocą pip: pip install django

następnie zrób to:

importuj django print (django.get_version ()) (w zależności od używanej wersji Pythona. dotyczy to serii Python 3+)

a następnie możesz uruchomić to: python manage.py runserver i sprawdzić w przeglądarce internetowej, wpisując: localhost: 8000 i powinieneś zobaczyć stronę zasilaną przez django.

Mam nadzieję że to pomoże.

Ashish
źródło
0

Dodałem nazwę nowej aplikacji do listy INSTALLED_APPS w pliku settings.py „przed” wydałem polecenie startapp. Po usunięciu wpisu na liście mogę utworzyć aplikację.

Milad M.
źródło
0

Rozwiązałem ten problem, używając polecenia „django-admin” w następujący sposób:

django-admin startproject _project_name

po prostu usuń plik „.py” dołączony do „django-admin”

M. Haziq
źródło
0

Wywołanie aplikacji sitemoże odtworzyć ten problem.

Christian Gutierrez Sierra
źródło
0

Otrzymałem to, ponieważ zapomniałem, że zainstalowałem Django za pomocą pip -U, więc był dostępny tylko dla użytkownika, który uruchomił moją aplikację Django. Aby uruchomić manage.py musiałem to zrobić

sudo su -s /bin/bash MY_DJANGO_USER
/PATH/TO/MY/APP/manage.py
EM0
źródło
-2

wszyscy nie wspomnieliście o przypadku, w którym ktoś „jak ja” zainstalowałby django przed zainstalowaniem virtualenv ... więc dla wszystkich moich znajomych, jeśli to zrobiłeś ... zainstaluj ponownie django po aktywacji virtualenv..i mam nadzieję że to pomoże

Dever
źródło
To nie jest rozwiązanie. To komentarz do innego rozwiązania autorstwa Steve'a K.
shanemgrey
tak się ze mną stało i tak to naprawiłem ... to błąd, w który może wpaść każdy początkujący
Dever