mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[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:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user