Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/naskio/n8n-nodes-python
Run Python code on n8n
https://github.com/naskio/n8n-nodes-python
automation n8n n8n-nodes n8n-nodes-python python python3 workflow
Last synced: 6 days ago
JSON representation
Run Python code on n8n
- Host: GitHub
- URL: https://github.com/naskio/n8n-nodes-python
- Owner: naskio
- License: other
- Created: 2022-02-11T11:07:44.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-11-21T12:47:39.000Z (about 1 year ago)
- Last Synced: 2025-01-02T02:12:37.654Z (13 days ago)
- Topics: automation, n8n, n8n-nodes, n8n-nodes-python, python, python3, workflow
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/n8n-nodes-python
- Size: 35.2 KB
- Stars: 110
- Watchers: 1
- Forks: 14
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# n8n-nodes-python
![n8n.io - Workflow Automation](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)
PythonFunction module - custom node for running python code on n8n.
> run python code on n8n
# Python Function
PythonFunction node is used to run custom Python snippets to transform data or to implement some custom functionality
that n8n does not support yet.# Installation
## Using n8n-python Docker Image (Recommended)
This node is pre-installed in
the [n8n-python](https://github.com/naskio/docker-n8n-python) [docker image](https://hub.docker.com/r/naskio/n8n-python)
.- Use `n8n-python:latest-debian` if you are planning to install heavy python packages such as `numpy` or `pandas`.
- Use `n8n-python:latest` for a more lightweight image.> Example using [docker-compose.yml](https://github.com/naskio/docker-n8n-python/blob/main/demo/docker-compose-local.yml)
## Adding external packages
You can mount a `requirements.txt` file to the container to install additional packages.
You can use the [ExecuteCommand](https://n8n.io/integrations/n8n-nodes-base.executeCommand) node to
run `pip install -r requirements.txt`
and the [n8nTrigger](https://n8n.io/integrations/n8n-nodes-base.n8nTrigger) node to trigger it after each **restart**.## Install Locally
### 1- Install Requirements
This node requires the following dependencies to be installed in your environment:
- Python 3.6 or higher
```shell
python3 --version # check output version
```- [python-fire](https://www.github.com/google/python-fire)
```shell
# install fire
pip install fire
```### 2- Add n8n-nodes-python to your n8n instance
If you’re running either by installing it globally or via PM2, make sure that you install `n8n-nodes-python` inside n8n.
n8n will find the module and load it automatically.If using docker, add the following line to your `Dockerfile`:
```shell
# Install n8n-nodes-python module
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-python
```Read more about the installation process in
the [n8n documentation - Use the n8n-nodes-module in production](https://docs.n8n.io/nodes/creating-nodes/create-n8n-nodes-module.html#use-the-n8n-nodes-module-in-production)
.# Usage
This node receives `ìtems` and should return a list of `items`.
Example:
```python3
new_items = []
for item in items:
item['newField'] = 'newValue'
new_items.append(item)
return new_items # should return a list
```> The JSON attribute of each item is added and removed automatically.
> You can access the values directly without the `json` attribute.
> You don't need to put the item in a `json` attribute. it will be done automatically.## Variable: items
the `items` variable is a list of items that are passed to the function. They are directly accessible in the function.
Example:
```python3
print(items)
# > list
return items
```## Credentials: env_vars (optional)
You can specify environment variables to be used in the python code. The environment variables are accessible throw
the `env_vars` dict.Example:
```python3
print(env_vars)
print(env_vars.get('MY_VAR','default_value'))
# > dict
```## Logging to the browser console
it is possible to write to the browser console by writing to `stdout`
Example:
```
print('Hello World')
# or
import sys
sys.stdout.write('Hello World')
```# Notes
- `stderr`is used for passing data between nodes.
- if exit code is 0, the node will be executed successfully and `stderr` represents the JSON representation of the
output of the node
- if exit code is not 0, the node fails and `stderr` represents the error message- The `json` attribute of each item is added and removed automatically. (you can access and return the items directly
without the `json` attribute)# Contribute
Pull requests are welcome! For any bug reports, please create an issue.
# License
[Apache 2.0 with Commons Clause](LICENSE.md)