用于构建完全自包含的python zipapp的命令行实用程序。

shiv的Python项目详细描述


PyPIBuild StatusAppVeyor StatusCoverage StatusDocumentation StatusLicenseSupported

snake

shiv

shiv是一个命令行实用程序,用于构建完全独立的python zipapp,如PEP 441中所述,但包含了它们的所有依赖项!

shiv的主要目标是使分发python应用程序变得快速和简单。

完整的文档可以找到here

系统要求

  • Python3.6+
  • Linux/OSX/Windows

如何

shiv有一些自己的命令行选项,并接受几乎所有可以通过pip install的选项。

简单的cli示例

使用shiv:

创建pipenv的可执行文件
$ shiv -c pipenv -o ~/bin/pipenv pipenv pew
$ ~/bin/pipenv --version
pipenv, version 2018.05.18
涉及车轮缓存的复杂示例

使用下载的boto控制盘创建交互式可执行文件:

$ python3 -m pip download boto
Collecting boto
  File was already downloaded /tmp/tmp.iklsO1qyd3/boto-2.48.0-py2.py3-none-any.whl
Successfully downloaded boto
$ shiv -o boto.pyz --find-links . --no-index boto
 shiv! ?
Collecting boto
Installing collected packages: boto
Successfully installed boto-2.48.0
 done
$ ./boto.pyz
Python 3.6.1 (default, Apr 192017, 21:58:41)[GCC 4.8.5 20150623(Red Hat 4.8.5-4)] on linux
Type "help", "copyright", "credits" or "license"for more information.
(InteractiveConsole)
>>> import boto
>>>

安装

您可以通过pip/pypi

安装shiv
pip install shiv

您甚至可以使用shiv创建一个pyzshiv

python3 -m venv .
source bin/activate
pip install shiv
shiv -c shiv -o shiv shiv

发展中

我们很乐意捐款!开发引导程序很容易:

git clone git@github.com:linkedin/shiv.git
cd shiv
python3 setup.py venv
. activate
python3 setup.py develop

不要忘记运行和编写测试:

pip install tox
tox

有问题

使用shiv创建的zipapp不能保证与其他架构交叉兼容。例如,a pyz 在mac上构建的文件可能只在其他mac上工作,类似于rhel等。这通常只适用于在其依赖项中具有c扩展名的zipapp。如果您的所有依赖项都是纯python,那么pyz有可能在其他平台上工作。只是一些需要注意的事情。

使用shiv创建的zipapps将自己提取到~/.shiv,除非通过 SHIV_ROOT。如果您使用shiv创建了许多实用程序,您可能需要偶尔清理这个 目录。


确认

类似项目:

Juliette Carvalho的徽标

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在OSGI中使用cxf生成的客户端时出现Java类装入器问题和JaxB异常   java为什么要在javamail中迭代多部分电子邮件中的部分?   并发编程问题   JFileChooser&&System中未调用java windowClosing。退出功能不正常?   SQL查询的java语法分析   java如何使用AspectJ声明字段上的警告   什么是java向量。元素()C#等价物   java解析Android应用程序中tornado web服务中的CSV文件   java我试过c2dm,我需要服务器端   java调整JPanel大小以适应新的JLabel图标   Java与Python脚本的通信   java使用Saxon通过XSLT生成URL   java net::ERR_complete_CHUNKED_编码200(OK)来自struts应用程序中的tomcat   java如何为我的窗格设置不同的位置?   java使用Cypher Neo4j获取给定类型的所有节点(从SQL世界中的tablename中选择*)   nio使用Java解析文件值   java使用WSDL生成REST客户端会是错误的方向吗?   java如何在我的应用程序中构建类映射?   java按钮。setEnabled在第一个循环中不起作用   xPath适用于最后一页,但不适用于第一页