Before we enable python support, follow the installation instructions to get LEAN running C# algorithms in your machine.
1. Install Python 3.6:
- Use the Windows x86-64 MSI installer from https://www.python.org/downloads/release/python-364/.
- When asked to select the features to be installed, make sure you select "Add python.exe to Path"
- Skip the next step if
python36.dll
can be found atC:\Windows\System32
. - Add
python36.dll
location to the system path:- Right mouse button on My Computer. Click Properties.
- Click Advanced System Settings -> Environment Variables -> System Variables
- On the "Path" section click New and enter the
python36.dll
path, in our example this wasC:\Windows\System32
- Create two new system variables:
PYTHONHOME
andPYTHONPATH
which values must be, respectively, the location of your python installation (e.g.C:\Python36amd64
) and its Lib folder (e.g.C:\Python36amd64\Lib
).
- Install pandas and its dependencies.
2. Run python algorithm:
- Prepare
Python.Runtime.dll
. This is needed to run Python algorithms in LEAN.- Delete the existing files in
\Lean\packages\QuantConnect.pythonnet.1.0.5.7\lib
- Using windows you'll need to copy the
\Lean\packages\QuantConnect.pythonnet.1.0.5.7\build\Python.Runtime.win
file into the..\lib\
directory and rename it toPython.Runtime.dll
.
- Delete the existing files in
- Update the config to run the python algorithm:
"algorithm-type-name": "BasicTemplateAlgorithm",
"algorithm-language": "Python",
"algorithm-location": "../../../Algorithm.Python/BasicTemplateAlgorithm.py",
- Rebuild LEAN. This step will ensure that the
Python.Runtime.dll
you set in 2.1 will be used. - Run LEAN. You should see the same result of the C# algorithm you tested earlier.
1. Install Python 3.6 with Anaconda:
- Follow "Installing on macOS" instructions from Anaconda documentation page.
- Prepend the Anaconda install location to
DYLD_FALLBACK_LIBRARY_PATH
.
$ export DYLD_FALLBACK_LIBRARY_PATH="/<path to anaconda>/lib:$DYLD_FALLBACK_LIBRARY_PATH"
- For Visual Studio for Mac users: add symbolic links to python's dynamic-link libraries in
/usr/local/lib
$ sudo mkdir /usr/local/lib
$ sudo ln -s /<path to anaconda>/lib/libpython* /usr/local/lib
- Install pandas and its dependencies.
2. Run python algorithm:
- Prepare
Python.Runtime.dll
. This is needed to run Python algorithms in LEAN.- Delete the existing files in
\Lean\packages\QuantConnect.pythonnet.1.0.5.7\lib
- Using windows you'll need to copy the
\Lean\packages\QuantConnect.pythonnet.1.0.5.7\build\Python.Runtime.mac
file into the..\lib\
directory and rename it toPython.Runtime.dll
.
- Delete the existing files in
- Update the config to run the python algorithm:
"algorithm-type-name": "BasicTemplateAlgorithm",
"algorithm-language": "Python",
"algorithm-location": "../../../Algorithm.Python/BasicTemplateAlgorithm.py",
- Rebuild LEAN. This step will ensure that the
Python.Runtime.dll
you set in 2.1 will be used. - Run LEAN. You should see the same result of the C# algorithm you tested earlier.
1. Install Python 3.6 with Miniconda:
By default, miniconda is installed in the users home directory ($HOME
):
export PATH="$HOME/miniconda3/bin:$PATH"
wget http://cdn.quantconnect.com.s3.amazonaws.com/miniconda/Miniconda3-4.3.31-Linux-x86_64.sh
bash Miniconda3-4.3.31-Linux-x86_64.sh -b
rm -rf Miniconda3-4.3.31-Linux-x86_64.sh
sudo ln -s $HOME/miniconda3/lib/libpython3.6m.so /usr/lib/libpython3.6.so
conda update -y python conda pip
conda install -y cython pandas
2 Run python algorithm:
- Update the config to run the python algorithm:
"algorithm-type-name": "BasicTemplateAlgorithm",
"algorithm-language": "Python",
"algorithm-location": "../../../Algorithm.Python/BasicTemplateAlgorithm.py",
- Run LEAN. You should see the same result of the C# algorithm you tested earlier.
LEAN users do not need to compile Python.Runtime.dll
. The information below is targeted to developers who wish to improve it.
Download QuantConnect/pythonnet github clone or downloading the zip. If downloading the zip - unzip to a local pathway.
Note: QuantConnect's version of pythonnet is an enhanced version of pythonnet with added support for System.Decimal
and System.DateTime
.
Below we can find the compilation flags that create a suitable Python.Runtime.dll
for each operating system.
Windows
msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36.cs" /p:Configuration=ReleaseWin /p:DefineConstants="PYTHON36,PYTHON3,UCS2"
macOS
msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36m.cs" /p:Configuration=ReleaseMono /p:DefineConstants="PYTHON36,PYTHON3,UCS4,MONO_OSX,PYTHON_WITH_PYMALLOC"
Linux
msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36m.cs" /p:Configuration=ReleaseMono /p:DefineConstants="PYTHON36,PYTHON3,UCS4,MONO_LINUX,PYTHON_WITH_PYMALLOC"