Django 쉘에서 Python 스크립트를 실행하는 방법은 무엇입니까?
Django 쉘에서 Python 스크립트를 실행해야합니다. 나는 시도했다 :
./manage.py shell << my_script.py
그러나 작동하지 않았습니다. 내가 무언가를 쓰려고 기다리고있었습니다.
<<
부분이 잘못 사용 <
하는 대신 :
$ ./manage.py shell < myscript.py
당신은 또한 할 수 있습니다 :
$ ./manage.py shell
...
>>> execfile('myscript.py')
python3의 경우 사용해야합니다
>>> exec(open('myscript.py').read())
당신은 이것을하지 않는 것이 좋습니다 shell
-이것은 장고 환경에서 무작위 스크립트를 실제로 실행해서는 안되기 때문에 의도되었습니다 (그러나이 주위 에 방법이 있습니다. 다른 답변을 참조하십시오).
이것은 당신이 여러 번 실행됩니다 스크립트가 있다면, 그것은 좋은 생각은로 설정의 사용자 지정 명령 , 즉
$ ./manage.py my_command
이 작업을 수행하는 것은의 하위 디렉터리에있는 파일 생성 management
및 commands
사용자의 app
, 즉
my_app/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
my_command.py
tests.py
views.py
이 파일에서 사용자 정의 명령을 정의하십시오 (파일 이름이에서 실행하려는 명령의 이름인지 확인하십시오 ./manage.py
)
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, **options):
# now do the things that you want with your models here
Django 1.7 이상을 사용하는 사람이라면 단순히 설정 모듈을 가져 오는 것만으로는 충분하지 않은 것 같습니다.
약간의 파기 후이 스택 오버플로 답변을 찾았습니다 : https : //.com/a/23241093
이제 다음을 수행해야합니다.
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
# now your code can go here...
위의 작업을 수행하지 않으면 django.core.exceptions.AppRegistryNoReady
오류가 발생했습니다.
내 스크립트 파일은 django 프로젝트와 같은 디렉토리에 있습니다 (즉, manage.py와 같은 폴더에 있습니다)
나는 파티에 늦었지만 내 응답이 누군가를 도울 수 있기를 바랍니다. Python 스크립트 에서이 작업을 수행 할 수 있습니다.
import sys, os
sys.path.append('/path/to/your/django/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
나머지는 여기에 간다 ....
runscript
에서 장고 - 확장
python manage.py runscript scripty.py
script.py
테스트 할 샘플 :
from django.contrib.auth.models import User
print(User.objects.values())
http://django-extensions.readthedocs.io/en/latest/command_extensions.html에 언급되어 있으며 다음에 문서화되어 있습니다.
python manage.py runscript --help
장고 1.9.6, 장고 확장 1.6.7에서 테스트되었습니다.
IPython 을 사용할 수 있으면 ( pip install ipython
) ./manage.py shell
자동으로 쉘을 사용하고 magic 명령을 사용할 수 있습니다 %run
.
%run my_script.py
DJANGO_SETTINGS_MODULE
환경 변수 세트로 스크립트를 실행할 수 있습니다 . 그것이 장고 쉘 환경을 설정하는 데 필요한 전부입니다.
이것은 장고> = 1.4에서 작동합니다.
@AtulVarma는 작동하지 않는 대답 으로 매우 유용한 의견을 제시했습니다 .
echo 'import myscript' | python manage.py shell
다른 답변에서 알 수 있지만 명시 적으로 명시하지는 않지만 실제로 필요한 것은 Django 셸에서 스크립트를 실행하는 것이 아니라 Django 셸 을 사용하지 않고 앱에 액세스하는 것 입니다.
이것은 장고 버전과 장고 버전이 많이 다릅니다. 이 스레드에서 솔루션을 찾지 못하면 여기에 답변하십시오 -manage.py 셸을 사용하지 않고 모델 객체에 액세스하는 Django 스크립트 또는 유사한 검색이 도움이 될 수 있습니다.
나는 my_command.py를 시작해야했다.
import os,sys
sys.path.append('/path/to/myproject')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.file")
import django
django.setup()
import project.app.models
#do things with my models, yay
그리고 달렸다 python3 my_command.py
(장고 2.0.2)
스크립트에 많은 명령이 없으면 다음 명령을 사용하십시오.
manage.py shell --command="import django; print(django.__version__)"
import os, sys, django
os.environ["DJANGO_SETTINGS_MODULE"] = "settings"
sys.path.insert(0, os.getcwd())
django.setup()
이 방법은 최신 버전의 django에서 더 이상 사용되지 않습니다! (> 1.3)
다른 대답은 이것을 맨 위에 추가 할 수 있습니다. my_script.py
from django.core.management import setup_environ
import settings
setup_environ(settings)
그리고 my_script.py
당신이있는 디렉토리에서 python으로 실행 settings.py
하지만 약간 해키입니다.
$ python my_script.py
가상 환경을 사용하는 경우 이것을 시도하십시오 :-
python manage.py 셸
해당 명령을 사용하려면 가상 환경 내부에 있어야합니다. 이 사용을 위해 :-
workon vir_env_name
예를 들어 :-
dc@dc-comp-4:~/mysite$ workon jango
(jango)dc@dc-comp-4:~/mysite$ python manage.py shell
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
참고 :-여기 mysite는 내 웹 사이트 이름이고 jango는 내 가상 환경 이름입니다.
BG에서 더 뛰어나고 싶다면 :
nohup echo 'exec(open("my_script.py").read())' | python manage.py shell &
출력은 nohup.out
방금 흥미로운 점은 Django Scripts입니다. 파이썬 manage.py runscript foobar로 실행할 스크립트를 작성할 수 있습니다. 구현 및 구조에 대한 자세한 내용은 http://django-extensions.readthedocs.org/en/latest/index.html 에서 확인할 수 있습니다.
OP와 같은 질문으로 여기에 왔으며 파이썬 3에서도 작동하는 질문 내 실수에서 내가 가장 좋아하는 대답을 찾았습니다.
./manage.py shell <<EOF
import my_script
my_script.main()
EOF
다른 방법으로 이것을 실행하십시오 :
echo 'execfile("/path_to/myscript.py")' | python manage.py shell --settings=config.base
이것은 Python2.7 및 Django1.9에서 작동합니다.
django.setup ()이 작동하지 않는 것 같습니다.
필요하지 않은 것 같습니다.
이것만으로도 효과가있었습니다.
import os, django, glob, sys, shelve
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
참고 URL : https://stackoverflow.com/questions/16853649/how-to-execute-a-python-script-from-the-django-shell
'Programming' 카테고리의 다른 글
변경시 선택한 파일의 전체 경로를 얻는 방법 (0) | 2020.04.27 |
---|---|
힘내 오류 : src refspec 마스터가 (0) | 2020.04.25 |
Android에서 활동 제목을 변경하는 방법은 무엇입니까? (0) | 2020.04.25 |
괄호 (대괄호) 사이에있는 텍스트는 어떻게 추출합니까? (0) | 2020.04.25 |
왜 의회에서 작성된 프로그램이 더 자주 작성되지 않습니까? (0) | 2020.04.25 |