Files
quantconnect--lean/Algorithm.Python
AlexCatarino 543698f1f9 Updates installation instructions of python support on Linux
By default, miniconda is installed in the users' home directory, therefore the instalation instructions were changed to keep it simple.
2018-03-26 12:33:30 +01:00
..
2015-09-01 22:17:35 -04:00
2017-05-14 15:11:57 +01:00
2017-04-11 17:09:44 +01:00
2018-02-23 15:09:06 -05:00
2015-09-01 22:17:35 -04:00

QuantConnect Python Algorithm Project:

Before we enable python support, follow the installation instructions to get LEAN running C# algorithms in your machine.

Windows

1. Install Python 3.6:

  1. Use the Windows x86-64 MSI installer from https://www.python.org/downloads/release/python-364/.
  2. When asked to select the features to be installed, make sure you select "Add python.exe to Path"
  3. Once installed confirm the python36.dll is in place in C:\Windows\System32.
  4. Add python36.dll location to the system path:
    1. Right mouse button on My Computer. Click Properties.
    2. Click Advanced System Settings -> Environment Variables -> System Variables
    3. On the "Path" section click New and enter the python36.dll path, in our example this was C:\Windows\System32
    4. Create two new system variables: PYTHONHOME and PYTHONPATH which values must be, respectively, the location of your python installation (e.g. C:\Python36amd64) and its Lib folder (e.g. C:\Python36amd64\Lib).
    5. C:\Windows\System32 is normally in the path, thus this procedure is not necessary.
  5. Install pandas and its dependencies.

2. Run python algorithm:

  1. Prepare Python.Runtime.dll. This is needed to run Python algorithms in LEAN.
    1. Delete the existing files in \Lean\packages\QuantConnect.pythonnet.1.0.5.5\lib
    2. Using windows you'll need to copy the \Lean\packages\QuantConnect.pythonnet.1.0.5.5\build\ Python.Runtime.win file into the ..\lib\ directory and rename it to Python.Runtime.dll.
  2. Update the config to run the python algorithm:
"algorithm-type-name": "BasicTemplateAlgorithm",
"algorithm-language": "Python",
"algorithm-location": "../../../Algorithm.Python/BasicTemplateAlgorithm.py",
  1. Rebuild LEAN. This step will ensure that the Python.Runtime.dll you set in 2.1 will be used.
  2. Run LEAN. You should see the same result of the C# algorithm you tested earlier.

macOS

Known issue with macOS: Python.Runtime.dll cannot import CLR modules after their reference is added. Please follow this Github Issue for updates.

Linux

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:

  1. Update the config to run the python algorithm:
"algorithm-type-name": "BasicTemplateAlgorithm",
"algorithm-language": "Python",
"algorithm-location": "../../../Algorithm.Python/BasicTemplateAlgorithm.py",
  1. Run LEAN. You should see the same result of the C# algorithm you tested earlier.

Python.Runtime.dll compilation

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 of pythonnet with support to 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 UCS2

msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36.cs" /p:Configuration=ReleaseMono /p:DefineConstants="PYTHON36,PYTHON3,UCS2,MONO_OSX"

macOS UCS4

msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36.cs" /p:Configuration=ReleaseMono /p:DefineConstants="PYTHON36,PYTHON3,UCS4,MONO_OSX"

Linux

msbuild pythonnet.sln /nologo /v:quiet /t:Clean;Rebuild /p:Platform=x64 /p:PythonInteropFile="interop36.cs" /p:Configuration=ReleaseMono /p:DefineConstants="PYTHON36,PYTHON3,UCS4,MONO_LINUX"