[2.0.x] Fixed #28594 -- Removed Jython docs and specific code
Thanks Andrey Martyanov for the report, and Tim Graham for the review.
Backport of 23b21db31b
from master.
This commit is contained in:
parent
45d89856fc
commit
830636df73
|
@ -5,7 +5,6 @@ import posixpath
|
|||
import re
|
||||
import shutil
|
||||
import stat
|
||||
import sys
|
||||
import tempfile
|
||||
from importlib import import_module
|
||||
from os import path
|
||||
|
@ -335,9 +334,6 @@ class TemplateCommand(BaseCommand):
|
|||
Make sure that the file is writeable.
|
||||
Useful if our source is read-only.
|
||||
"""
|
||||
if sys.platform.startswith('java'):
|
||||
# On Jython there is no os.access()
|
||||
return
|
||||
if not os.access(filename, os.W_OK):
|
||||
st = os.stat(filename)
|
||||
new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR
|
||||
|
|
|
@ -307,24 +307,11 @@ def python_reloader(main_func, args, kwargs):
|
|||
pass
|
||||
|
||||
|
||||
def jython_reloader(main_func, args, kwargs):
|
||||
from _systemrestart import SystemRestart
|
||||
_thread.start_new_thread(main_func, args)
|
||||
while True:
|
||||
if code_changed():
|
||||
raise SystemRestart
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
def main(main_func, args=None, kwargs=None):
|
||||
if args is None:
|
||||
args = ()
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
if sys.platform.startswith('java'):
|
||||
reloader = jython_reloader
|
||||
else:
|
||||
reloader = python_reloader
|
||||
|
||||
wrapped_main_func = check_errors(main_func)
|
||||
reloader(wrapped_main_func, args, kwargs)
|
||||
python_reloader(wrapped_main_func, args, kwargs)
|
||||
|
|
|
@ -1,74 +1,14 @@
|
|||
========================
|
||||
Running Django on Jython
|
||||
========================
|
||||
================
|
||||
Django on Jython
|
||||
================
|
||||
|
||||
.. index:: Jython, Java, JVM
|
||||
|
||||
Jython_ is an implementation of Python that runs on the Java platform (JVM).
|
||||
This document will get you up and running with Django on top of Jython.
|
||||
|
||||
Installing Jython
|
||||
=================
|
||||
|
||||
Django works with Jython versions 2.7b2 and higher. See the Jython_ website for
|
||||
download and installation instructions.
|
||||
|
||||
.. _jython: http://www.jython.org/
|
||||
|
||||
Creating a servlet container
|
||||
============================
|
||||
|
||||
If you just want to experiment with Django, skip ahead to the next section;
|
||||
Django includes a lightweight Web server you can use for testing, so you won't
|
||||
need to set up anything else until you're ready to deploy Django in production.
|
||||
|
||||
If you want to use Django on a production site, use a Java servlet container,
|
||||
such as `Apache Tomcat`_. Full JavaEE applications servers such as `GlassFish`_
|
||||
or `JBoss`_ are also OK, if you need the extra features they include.
|
||||
|
||||
.. _`Apache Tomcat`: https://tomcat.apache.org/
|
||||
.. _GlassFish: https://javaee.github.io/glassfish/
|
||||
.. _JBoss: https://www.jboss.org/
|
||||
|
||||
Installing Django
|
||||
=================
|
||||
|
||||
The next step is to install Django itself. This is exactly the same as
|
||||
installing Django on standard Python, so see
|
||||
:ref:`removing-old-versions-of-django` and :ref:`install-django-code` for
|
||||
instructions.
|
||||
|
||||
Installing Jython platform support libraries
|
||||
============================================
|
||||
|
||||
The `django-jython`_ project contains database backends and management commands
|
||||
for Django/Jython development. Note that the builtin Django backends won't work
|
||||
on top of Jython.
|
||||
|
||||
.. _`django-jython`: https://github.com/beachmachine/django-jython
|
||||
|
||||
To install it, follow the `installation instructions`_ detailed on the project
|
||||
website. Also, read the `database backends`_ documentation there.
|
||||
|
||||
.. _`installation instructions`: https://pythonhosted.org/django-jython/quickstart.html#install
|
||||
.. _`database backends`: https://pythonhosted.org/django-jython/database-backends.html
|
||||
|
||||
Differences with Django on Jython
|
||||
=================================
|
||||
|
||||
.. index:: JYTHONPATH
|
||||
|
||||
At this point, Django on Jython should behave nearly identically to Django
|
||||
running on standard Python. However, are a few differences to keep in mind:
|
||||
|
||||
* Remember to use the ``jython`` command instead of ``python``. The
|
||||
documentation uses ``python`` for consistency, but if you're using Jython
|
||||
you'll want to mentally replace ``python`` with ``jython`` every time it
|
||||
occurs.
|
||||
|
||||
* Similarly, you'll need to use the ``JYTHONPATH`` environment variable
|
||||
instead of ``PYTHONPATH``.
|
||||
|
||||
* Any part of Django that requires `Pillow`_ will not work.
|
||||
|
||||
.. _Pillow: https://pillow.readthedocs.io/en/latest/
|
||||
If you want to use Jython (which supports only Python 2.7 at the time of this
|
||||
writing), you must use Django 1.11.x (the last series to support Python 2).
|
||||
Jython support may be readded to Django if a Python 3 compatible Jython is
|
||||
released.
|
||||
|
|
|
@ -275,14 +275,6 @@ more efficiently - faster, and using fewer system resources.
|
|||
|
||||
* :doc:`Performance and optimization overview <topics/performance>`
|
||||
|
||||
Python compatibility
|
||||
====================
|
||||
|
||||
Django aims to be compatible with multiple different flavors and versions of
|
||||
Python:
|
||||
|
||||
* :doc:`Jython support <howto/jython>`
|
||||
|
||||
Geographic framework
|
||||
====================
|
||||
|
||||
|
|
|
@ -19,13 +19,6 @@ database called SQLite_ so you won't need to set up a database just yet.
|
|||
Get the latest version of Python at https://www.python.org/downloads/ or with
|
||||
your operating system's package manager.
|
||||
|
||||
.. admonition:: Django on Jython
|
||||
|
||||
If you use Jython_ (a Python implementation for the Java platform), you'll
|
||||
need to follow a few additional steps. See :doc:`/howto/jython` for details.
|
||||
|
||||
.. _jython: http://www.jython.org/
|
||||
|
||||
You can verify that Python is installed by typing ``python`` from your shell;
|
||||
you should see something like::
|
||||
|
||||
|
|
|
@ -154,8 +154,6 @@ Django's codebase has been refactored to remove incompatibilities with
|
|||
on the Java Virtual Machine. Django is now compatible with the forthcoming
|
||||
Jython 2.5 release.
|
||||
|
||||
See :doc:`/howto/jython`.
|
||||
|
||||
.. _Jython: http://www.jython.org/
|
||||
|
||||
Generic relations in forms and admin
|
||||
|
|
|
@ -15,10 +15,10 @@ your operating system's package manager.
|
|||
|
||||
.. admonition:: Django on Jython
|
||||
|
||||
If you use Jython_ (a Python implementation for the Java platform), you'll
|
||||
need to follow a few additional steps. See :doc:`/howto/jython` for details.
|
||||
Jython_ (a Python implementation for the Java platform) is not compatible
|
||||
with Python 3, so Django ≥ 2.0 cannot run on Jython.
|
||||
|
||||
.. _jython: http://jython.org/
|
||||
.. _jython: http://www.jython.org/
|
||||
|
||||
.. admonition:: Python on Windows
|
||||
|
||||
|
|
|
@ -95,15 +95,8 @@ class AdminScriptTestCase(unittest.TestCase):
|
|||
else:
|
||||
os.remove(full_name)
|
||||
|
||||
# Also try to remove the compiled file; if it exists, it could
|
||||
# Also remove a __pycache__ directory, if it exists; it could
|
||||
# mess up later tests that depend upon the .py file not existing
|
||||
try:
|
||||
if sys.platform.startswith('java'):
|
||||
# Jython produces module$py.class files
|
||||
os.remove(re.sub(r'\.py$', '$py.class', full_name))
|
||||
except OSError:
|
||||
pass
|
||||
# Also remove a __pycache__ directory, if it exists
|
||||
cache_name = os.path.join(self.test_dir, '__pycache__')
|
||||
if os.path.isdir(cache_name):
|
||||
shutil.rmtree(cache_name)
|
||||
|
@ -133,11 +126,6 @@ class AdminScriptTestCase(unittest.TestCase):
|
|||
|
||||
# Define a temporary environment for the subprocess
|
||||
test_environ = os.environ.copy()
|
||||
if sys.platform.startswith('java'):
|
||||
python_path_var_name = 'JYTHONPATH'
|
||||
else:
|
||||
python_path_var_name = 'PYTHONPATH'
|
||||
|
||||
old_cwd = os.getcwd()
|
||||
|
||||
# Set the test environment
|
||||
|
@ -147,7 +135,7 @@ class AdminScriptTestCase(unittest.TestCase):
|
|||
del test_environ['DJANGO_SETTINGS_MODULE']
|
||||
python_path = [base_dir, django_dir, tests_dir]
|
||||
python_path.extend(ext_backend_base_dirs)
|
||||
test_environ[python_path_var_name] = os.pathsep.join(python_path)
|
||||
test_environ['PYTHONPATH'] = os.pathsep.join(python_path)
|
||||
test_environ['PYTHONWARNINGS'] = ''
|
||||
|
||||
# Move to the test directory and run
|
||||
|
|
Loading…
Reference in New Issue