Escrito por

IRIS Developer at Shift
Pergunta Vitor Leal da Silva · Maio 25

Ativar ambiente virtual para toda a execução do IRIS

Olá a todos. 

Após tentar executar métodos Python no Docker intersystemsdc/irishealth-community, que agora não permite executar nenhum método com Python, decidi deixar essa versão e começar a trabalhar com o [containers.intersystems.com/intersystems/iris-community](https://containers.intersystems.com/intersystems/iris-community)

Neste ambiente os métodos Python funcionam, o que já foi um passo bem grande. Estou tentando importar minhas bibliotecas com pip install -r requirements.txt mas, como uma excelente medida de segurança, o sistema impede que essa alteração seja feita na biblioteca geral, exigindo que a instalação seja realizada em um ambiente virtual. 

Tenho o seguinte código no Dockerfile:

ARG IMAGE=containers.intersystems.com/intersystems/iris-community:latest-em 
FROM $IMAGE 
USER root 
WORKDIR /opt/irisbuild 
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisbuild 

USER ${ISC_PACKAGE_MGRUSER} 

COPY src src 
COPY data data 
COPY iris.script iris.script 
COPY requirements.txt requirements.txt 
RUN python3 -m venv ${ISC_PACKAGE_INSTALLDIR}/.venv 
RUN bash -c "source \"${ISC_PACKAGE_INSTALLDIR}/.venv/bin/activate\" && pip install -U -r requirements.txt" 
RUN export IRIS_PYTHON_PATH=${ISC_PACKAGE_INSTALLDIR}/.venv/bin/ 

RUN iris start IRIS \ 
    && iris session IRIS < iris.script \ 
    && iris stop IRIS quietly 
    

Se eu acesso depois pelo terminal, vejo que os pacotes foram realmente instalados no ambiente virtual, mas se quero utilizá-los em uma classe do IRIS, ele não consegue acessar porque a aplicação não está com o ambiente virtual ativo. 

Consultei vários fóruns e não ficou muito claro para mim como configurar minha instância do IRIS para que ela tenha acesso aos pacotes instalados no ambiente virtual. 

No arquivo docker-compose.yml, tenho este valor na seção environment:

    environment:
      - IRIS_PYTHON_PATH=/usr/irissys/.venv/bin/
Mas não funciona; ao tentar fazer o import de algum pacote instalado neste ambiente, ele não o encontra. 
Alguma sugestão? 
Muito obrigado desde já.
Versão do produto: IRIS 2026.1
$ZV: IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2026.1 (Build 234U) Fri Mar 27 2026 14:07:14

Comments

Heloisa Paiva · Maio 26

Boa tarde, Vitor!
O Embedded Python por padrão procura as libraries em /caminho/do/seu/iris/mgr/python
E você pode especificar o caminho de instalação (acredito que o próprio /.venv do python pode estar la)

pip install -r requirements.txt -t /caminho/do/seu/iris/mgr/python 


se assim não funciona, no seu código você pode definir onde código procura imports com
set sys = ##class(%SYS.Python).Import("sys") 
do sys.path.append("/caminho/do/seu/venv/lib/pythonX.X/site-packages") set requests = ##class(%SYS.Python).Import("requests")
.
Deixe-me saber se isso ajuda

0