Fixed #28594 -- Removed Jython docs and specific code

Thanks Andrey Martyanov for the reporti, and Tim Graham for the review.
This commit is contained in:
Claude Paroz 2017-12-21 16:31:59 +01:00
parent 32ade4d73b
commit 23b21db31b
8 changed files with 13 additions and 119 deletions

View File

@ -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
@ -336,9 +335,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

View File

@ -314,24 +314,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)

View File

@ -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.

View File

@ -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
====================

View File

@ -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::

View File

@ -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

View File

@ -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

View File

@ -100,15 +100,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)
@ -138,11 +131,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
@ -152,7 +140,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