Hi @Donnas,
I agree that this could be really good to support out of the box. However, if you want to run the python scope from a python installed in a shared drive/VM / USB stick you can look at this workaround here :
Via a shared drive : Python integration with different vm's - #7 by jeevith
Via a USB : How to run python script in UiPath without installing python? - #4 by jeevith
The point being, UiPath’s invoke python scope does not care where python is installed but it wants to see a full installation python in the folder path provided in the activity.
Since the folder structure of a virtual env is not similar to a standard install of python, it fails. If you use the python.exe from “env/Scripts/” (as the python installation folder being parsed by UiPath does not support the virtualenv folder structure).
For people who are wondering what the error message we get:
In this case there is an alternative:
Another approach is to skip Python Scope activity and rather use ever versatile Invoke PowerShell activity.
- cd to your working folder path where you have the virtual environment
- Activate the virtualenv from PowerShell
- Run python “pythonfile.py”
- In the Invoke PowerShell activity, return the output as PSOutput (as the datatype required)
Resources
Param(
[Parameter(Mandatory=$true)] [string]$VirtualEnvFolder,
[Parameter(Mandatory=$true)] [string]$PythonFilePath
)
cd $VirtualEnvFolder
env/Scripts/activate.bat
python $PythonFilePath
def runInVirtualEnv():
return "I just ran on a virtual env!"
print (runInVirtualEnv())
PythonVirtualEnv.xaml (8.8 KB)
Why not use the default activate.ps1 to activate?
I use the default .bat
file to activate the virtualenv. You can use activate.ps1
if you wish, but in my experience .ps1
scripts usually require higher user access with a set execution policy Set-ExecutionPolicy Unrestricted
. It is done for security, but when activating virtualenv .bat
file will work without errors.
Hope this helps you and others.