Simplify Python Packages with zpip, an irispython pip wrapper

_________ ___ ____
|__ / _ \_ _| _ \
/ /| |_) | || |_) |
/ /_| __/| || __/
/____|_| |___|_|
   _________ ___ ____  
  |__  /  _ \_ _|  _ \ 
    / /| |_) | || |_) |
   / /_|  __/| ||  __/ 
  /____|_|  |___|_|    
_________ ___ ____ |__ / _ \_ _| _ \ / /| |_) | || |_) | / /_| __/| || __/ /____|_| |___|_|

Enter fullscreen mode Exit fullscreen mode

Starting in version 2021.1, InterSystems IRIS began shipping with a python runtime in the engine’s kernel. However, there was no way to install packages from within the instance. The main draw of python is its enormous package ecosystem. With that in mind, I introduce my side project zpip, a pip wrapper that is callable from the iris terminal.

What is zpip?

zpip is a a wrapper for python pip that enables developers to quickly add packages to an instance through the InterSystems IRIS terminal.

Features

  • python pip wrapper for InterSystems IRIS
  • Install/Uninstall python packages
  • Installation adds zpip keyword to the language

Installing zpip

%SYS> zpm "install zpip"
%SYS> zpm "install zpip"
%SYS> zpm "install zpip"

Enter fullscreen mode Exit fullscreen mode

TODO list

  • [ ] Callable API with statuses returned

Using zpip

All pip commands* are supported, however, any interactive command will require you to use the non-interactive version of the command. For example, to uninstall a package you’ll need to use the -y in the command to confirm the process.

Install python packages with zpip

// Install multiple packages
// beautiful soup and requests libraries
%SYS> zpip "install requests bs4"
// Install multiple packages
// beautiful soup and requests libraries
%SYS> zpip "install requests bs4"
// Install multiple packages // beautiful soup and requests libraries %SYS> zpip "install requests bs4"

Enter fullscreen mode Exit fullscreen mode

… in action:

%SYS>zpip "install emoji"
Processing /home/irisowner/.cache/pip/wheels/ae/80/43/3b56e58669d65ea9ebf38b9574074ca248143b61f45e114a6b/emoji-2.1.0-py3-none-any.whl
Installing collected packages: emoji
Successfully installed emoji-2.1.0
%SYS>
%SYS>zpip "install emoji"

Processing /home/irisowner/.cache/pip/wheels/ae/80/43/3b56e58669d65ea9ebf38b9574074ca248143b61f45e114a6b/emoji-2.1.0-py3-none-any.whl
Installing collected packages: emoji
Successfully installed emoji-2.1.0

%SYS>
%SYS>zpip "install emoji" Processing /home/irisowner/.cache/pip/wheels/ae/80/43/3b56e58669d65ea9ebf38b9574074ca248143b61f45e114a6b/emoji-2.1.0-py3-none-any.whl Installing collected packages: emoji Successfully installed emoji-2.1.0 %SYS>

Enter fullscreen mode Exit fullscreen mode

Specify a different install directory:

// Install to some other python package target
$SYS> zpip "install --target '/durable/iconfig/lib/python' emoji"
// Install to some other python package target
$SYS> zpip "install --target '/durable/iconfig/lib/python' emoji"
// Install to some other python package target $SYS> zpip "install --target '/durable/iconfig/lib/python' emoji"

Enter fullscreen mode Exit fullscreen mode

Uninstalling a python package

// Requires -y!
%SYS>zpip "uninstall -y emoji"
Found existing installation: emoji 2.1.0
Uninstalling emoji-2.1.0:
Successfully uninstalled emoji-2.1.0
// Requires -y!
%SYS>zpip "uninstall -y emoji"
Found existing installation: emoji 2.1.0
Uninstalling emoji-2.1.0:
  Successfully uninstalled emoji-2.1.0
// Requires -y! %SYS>zpip "uninstall -y emoji" Found existing installation: emoji 2.1.0 Uninstalling emoji-2.1.0: Successfully uninstalled emoji-2.1.0

Enter fullscreen mode Exit fullscreen mode

Other useful pip commands

list packages

// List Packages
%SYS> zpip "list"
Package Version
---------------------------- -----------
absl-py 1.1.0
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
asttokens 2.0.5
astunparse 1.6.3
attrs 21.4.0
backcall 0.2.0
beautifulsoup4 4.11.1
bleach 5.0.0
bs4 0.0.1
...
// List Packages
%SYS> zpip "list"
Package                      Version    
---------------------------- -----------
absl-py                      1.1.0      
argon2-cffi                  21.3.0     
argon2-cffi-bindings         21.2.0     
asttokens                    2.0.5      
astunparse                   1.6.3      
attrs                        21.4.0     
backcall                     0.2.0      
beautifulsoup4               4.11.1     
bleach                       5.0.0      
bs4                          0.0.1   
...
// List Packages %SYS> zpip "list" Package Version ---------------------------- ----------- absl-py 1.1.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 asttokens 2.0.5 astunparse 1.6.3 attrs 21.4.0 backcall 0.2.0 beautifulsoup4 4.11.1 bleach 5.0.0 bs4 0.0.1 ...

Enter fullscreen mode Exit fullscreen mode

Limitations

  • Interactive commands are unsupported
    • use -y for uninstalls
  • Search may not work depending on the system configuration
  • Uses the underlying os’s pip infrastructure so your installation is dependant on the os’s pip version.

原文链接:Simplify Python Packages with zpip, an irispython pip wrapper

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
Youth means limitless possibilities.
年轻就是无限的可能
评论 抢沙发

请登录后发表评论

    暂无评论内容