Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install products.pythonscripts

How to install Products.PythonScripts

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install products.pythonscripts
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
2.13.2 Available View build log
2.13.0 Available View build log
Windows (64-bit)
2.13.2 Available View build log
2.13.0 Available View build log
Mac OS X (10.5+)
2.13.2 Available View build log
2.13.0 Available View build log
Linux (32-bit)
2.13.2 Available View build log
2.13.0 Available View build log
Linux (64-bit)
2.13.2 Available View build log
2.13.0 Available View build log
ZPL 2.1
Lastest release
version 2.13.2 on Nov 20th, 2012


The Python Scripts product provides support for restricted execution of Python scripts, exposing them as callable objects within the Zope environment.

Providing access to extra modules

Python script objects have a limited number of "safe" modules available to them by default. In the course of working with Zope, you will probably wish to make other modules available to script objects.

The Utility.py module in the PythonScripts products provides a simple way to make modules available for use by script objects on a site-wide basis. Before making a module available to Python scripts, you should carefully consider the potential for abuse or misuse of the module, since all users with permission to create and edit Python scripts will be able to use any functions and classes defined in the module. In some cases, you may want to create a custom module that just imports a subset of names from another module and make that custom module available to reduce the risk of abuse.

The easiest way to make modules available to Python scripts on your site is to create a new directory in your Products directory containing an "__init__.py" file. At Zope startup time, this "product" will be imported, and any module assertions you make in the __init__.py will take effect. Here's how to do it:

  • In your Products directory (either in lib/python of your Zope installation or in the root of your Zope install, depending on your deployment model), create a new directory with a name like "GlobalModules".

  • In the new directory, create a file named "__init__.py".

  • Edit the __init__.py file, and add calls to the 'allow_module' function (located in the Products.PythonScripts.Utility module), passing the names of modules to be enabled for use by scripts. For example:

    # Global module assertions for Python scripts
    from Products.PythonScripts.Utility import allow_module

    This example adds the modules 'base64', 're' and the 'DateTime' module in the 'DateTime' package for use by Python scripts. Note that for packages (dotted names), each module in the package path will become available to script objects.

  • Restart your Zope server. After restarting, the modules you enabled in your custom product will be available to Python scripts.

Placing security assertions within the package/module you are trying to import will not work unless that package/module is located in your Products directory.

This is because that package/module would have to be imported for its included security assertions to take effect, but to do that would require importing a module without any security declarations, which defeats the point of the restricted Python environment.

Products work differently as they are imported at Zope startup. By placing a package/module in your Products directory, you are asserting, among other things, that it is safe for Zope to check that package/module for security assertions. As a result, please be careful when place packages or modules that are not Zope Products in the Products directory.


2.13.2 (2012-09-09)
  • Correct module security declaration for our standard module.
2.13.1 (2012-09-09)
  • LP #1047318: Adjust tests.
2.13.0 (2010-07-10)
  • Released as separate package.

Subscribe to package updates

Last updated Nov 20th, 2012

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.