What is MIME type "text/x-python"?
A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.
The MIME type text/x-python marks files that contain Python code. It tells software that the file is plain text meant to be interpreted as a Python script.- Main Function: It directs code editors and execution environments to treat the file as Python, enabling proper syntax highlighting and error checking.
- Execution Context: Web servers and other systems can recognize these files for running scripts, such as in CGI setups.
- Specialized Uses: It is used in domains like Snakemake, Sage, and Starlark, ensuring that related scripts are handled correctly.
This MIME type serves as a guide for programs. It ensures that Python code is recognized and processed correctly. For more details on media types, visit the IANA Media Types page.
Associated file extensions
.py, .rpy, .pyw, .sage, .spec, .cgi, .tac, .sagews, .smk, .star, .fcgi, .eb, .gni, .lmi, .xpy, .bzl, .gn, .gyp, .gypi, .mojo, .numpy, .numpyw, .numsc, .py3, .pyde, .pyi, .pyp, .pyt, .snakefile, .wsgi, .xsh
Usage Examples
HTTP Header
When serving content with this MIME type, set the Content-Type header:
Content-Type: text/x-python
HTML
In HTML, you can specify the MIME type in various elements:
<a href="file.dat" type="text/x-python">Download file</a>
Server-side (Node.js)
Setting the Content-Type header in Node.js:
const http = require('http');
http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/x-python');
res.end('Content here');
}).listen(3000);
Associated file extensions
.py, .rpy, .pyw, .sage, .spec, .cgi, .tac, .sagews, .smk, .star, .fcgi, .eb, .gni, .lmi, .xpy, .bzl, .gn, .gyp, .gypi, .mojo, .numpy, .numpyw, .numsc, .py3, .pyde, .pyi, .pyp, .pyt, .snakefile, .wsgi, .xsh
FAQs
Is text/x-python an official IANA standard?
No, the x- prefix indicates that this is a non-standard or experimental MIME type. While it is widely recognized by operating systems and web servers for Python source code, there is no official IANA registration; text/plain is often used as a generic fallback.
Why does my browser download .py files instead of running them?
Browsers generally do not execute Python natively; they are designed to run JavaScript. When a server sends a file with the text/x-python header, the browser treats it as a static text file to be downloaded or displayed, rather than an application to be executed.
Is it secure to serve files as text/x-python?
Proceed with caution. Serving files with this MIME type exposes the actual source code to the user. If your .py or .wsgi files contain sensitive data like API keys or database passwords, they should be executed on the server side (not served as static files), or the secrets should be moved to environment variables.
How do I configure Apache to serve Python source code as text?
To allow users to view or download the source code, add the mapping to your .htaccess or httpd.conf file. Use the directive AddType text/x-python .py to tell the server to deliver the file with the correct content type header.
How do I add text/x-python support to Nginx?
You can add the type definition inside your mime.types file or strictly within a server block. Add the line text/x-python py; inside the types { ... } block to ensure Nginx serves .py files with the correct header.
What is the difference between text/x-python and application/x-python-code?
text/x-python is used for human-readable source code (like .py files). In contrast, application/x-python-code is sometimes used for Python bytecode (compiled files like .pyc or .pyo), which are binary and not meant to be read by humans.
Can I use Python in a HTML <script> tag?
Not directly with standard browser technology. If you attempt <script src="script.py"></script>, the browser will likely throw a MIME type error or fail to execute it. To run Python in the browser, you must use a WebAssembly-based framework like PyScript or a transpiler like Brython.
General FAQ
What is a MIME type?
A MIME (Multipurpose Internet Mail Extensions) type is a standard that indicates the nature and format of a document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838.
MIME types are important because they help browsers and servers understand how to process a file. When a browser receives a file from a server, it uses the MIME type to determine how to display or handle the content, whether it's an image to display, a PDF to open in a viewer, or a video to play.
MIME types consist of a type and a subtype, separated by a slash (e.g., text/html, image/jpeg, application/pdf). Some MIME types also include optional parameters.
How do I find the MIME type for a file?
You can check the file extension or use a file identification tool such as file --mime-type on the command line. Many programming languages also provide libraries to detect MIME types.
Why are multiple MIME types listed for one extension?
Different applications and historical conventions may use alternative MIME identifiers for the same kind of file. Showing them all helps ensure compatibility across systems.