跳转到主要内容

jip为Jython和Python安装包

项目描述

https://img.shields.io/travis/jiptool/jip/master.svg https://img.shields.io/pypi/v/jip.svg?maxAge=2592000:target:https://pypi.python.org/pypi/jip https://img.shields.io/pypi/l/jip.svg?maxAge=2592000:target:

Jip是Jython的pip等效工具。它将解决依赖关系并为您的Jython环境下载jar文件。

许可证

jip本身根据MIT许可证分发。

安装

jip建议在virtualenv中运行,这是Python/Jython开发人员创建独立、便携环境的最佳实践。从jip 0.7开始,您可以使用jip.embed进行全局安装。

在virtualenv中安装jip

使用Jython创建virtualenv

virtualenv -p /usr/local/bin/jython jython-env

激活shell环境

cd jython-dev
source bin/activate

使用pip下载和安装jip

pip install jip

全局安装jip(自0.7版起)

pypi页面下载jip。然后使用setup.py安装它

jython setup.py install

用法

安装Java包

jip 将解析依赖项并从 Maven 仓库下载 JAR 文件。您可以使用 jip 安装 Java 包,就像使用 pip 安装 Python 包一样。

jip install <groupId>:<artifactId>:<version>

以 Spring 为例

jip install org.springframework:spring-core:3.0.5.RELEASE

解析 pom 文件中定义的依赖项

jip 允许您在 Maven pom 文件中定义依赖项,这比逐个输入安装命令更易于维护。

jip resolve pom.xml

解析构件的依赖项

使用 jip,您可以解析和下载构件的所有依赖项,而无需获取该构件本身(只要构件可下载,例如,只是一个普通的 pom 文件)。这在您即将为构件设置环境时特别有用。此外,jython 包的 Java 依赖项也是以这种方式定义的。

jip deps info.sunng.gefr:gefr:0.2-SNAPSHOT

更新快照构件

您可以使用 update 命令查找和下载新部署的快照。

jip update info.sunng.bason:bason-annotation:0.1-SNAPSHOT

使用路径中已安装的 Java 包运行 jython

另一个名为 jython-all 的脚本随 jip 一起提供。要使用路径中包含的 Java 包运行 jython,请使用 jython-all 而不是 jython

列表

使用 jip list 查看您刚刚安装的构件。

移除包

建议您使用 jip remove 来移除构件。这将使库索引与文件系统保持一致。

jip remove org.springframework:spring-core:3.0.5.RELEASE

目前,在移除构件时没有依赖项检查。因此,在使用此命令时请小心。

清理

jip clean 将删除您下载的所有内容,请谨慎使用。

持久化当前环境状态

在您分发环境之前,您可以使用 freeze 将当前状态持久化到 pom 文件中。

jip freeze > pom.xml

配置

您可以使用点文件配置自定义 Maven 仓库,jip 将按以下顺序搜索配置:

  1. $VIRTUAL_ENV/.jip_config,您的虚拟环境主目录

  2. $HOME/.jip_config,您的家目录

以下是一个示例

[repos:jboss]
uri=http://repository.jboss.org/maven2/
type=remote

[repos:local]
uri=~/.m2/repository/
type=local

[repos:central]
uri=https://repo1.maven.org/maven2/
type=remote

请注意,.jip_config 文件将覆盖默认设置,因此您必须显式包含默认本地和中央仓库。jip 一旦找到匹配 Maven 协调器的包,就会跳过仓库。

构件将缓存在 $HOME/.jip(如果您使用虚拟环境,则为 $VIRTUAL_ENV/.jip)。

从 0.4 版本开始,如果您使用 resolve 命令,您也可以在 pom.xml 中定义仓库。jip 将以最高优先级添加这些自定义仓库。

分发助手

从 0.4 版本开始,您可以在 setup.py 中使用 jip 来简化 jython 源代码包的分发。在 setup.py 所在目录中创建 pom.xml。以标准方式填写您的 Java 依赖项。在此文件中,您还可以定义自定义仓库。以下是一个示例

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    ...

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>

        ...

    </dependencies>

    <repositories>
        <repository>
            <id>sonatype-oss-sonatype</id>
            <url>http://oss.sonatype.org/content/repositories/snapshots/</url>
        </repository>
    </repositories>
</project>

在您的 setup.py 中,使用 jip setup 包装器代替 setuptools 或 distutils 提供的包装器。您可以使用关键字参数 pom 来指定 pom 文件的自定义名称。

from jip.dist import setup

除了传统的 pom 配置之外,jip 还允许您以 Python 的方式描述依赖项。您可以在 setup.py 中定义一个数据结构,如下所示

requires_java = {
    'dependencies':[
        ## (groupdId, artifactId, version)
        ('org.slf4j', 'slf4j-api', '1.6.1'),
        ('org.slf4j', 'slf4j-log4j12', '1.6.1'),
        ('info.sunng.soldat', 'soldat', '1.0-SNAPSHOT'),
        ('org.apache.mina', 'mina-core', '2.0.2')
    ],
    'repositories':[
        ('sonatype-oss-snapshot', 'http://oss.sonatype.org/content/repositories/snapshots/')
    ]
}

并将其传递给 jip setup 作为关键字参数 requires_java。一旦 jip 发现此参数,它将不会尝试加载 pom 文件。

from jip.dist import setup
setup(
    ...
    requires_java=requires_java,
    ...)

setuptools 中还添加了另一个 resolve 命令,您可以使用此命令将所有依赖项下载到库路径。

jython setup.py resolve

所有依赖项将在运行时安装

jython setup.py install

因此,使用jip的setup()包装器,pip将自动安装您的包所需的依赖项。您可以将您的包发布到Python Cheese Shop,并且只有一个命令就可以完成所有操作。

pip install [your-package-name]

嵌入式依赖项助手

jip.embed可用于虚拟环境和全局安装。您可以在代码中描述Java依赖项,然后它将自动解析。jip.embed灵感来源于Groovy的@Grab。

from jip.embed import require

require('commons-lang:commons-lang:2.6')
from org.apache.commons.lang import StringUtils

StringUtils.reverse('jip rocks')

联系方式

如果您在使用jip时遇到任何问题或对jip有功能请求,请随时在GitHub问题跟踪器上提交问题。您也可以在twitter上关注@Sunng

变更记录

  • 下一版本 - 未发布

  • 0.9.16 - 2022-12-20

  • 0.9.15 - 2020-06-04

    • 修复从本地仓库下载时的编码错误

  • 0.9.14 - 2020-05-25

    • 添加Python 3.7兼容性

    • 如果未知仓库类型,则优雅地失败

    • Maven中心迁移到HTTPS

  • 0.9.13 - 2017-07-23

    • install命令添加了copy-pom选项

  • 0.9.12 - 2017-03-20

    • 修复下载包含元音符号的POM时的错误

    • 删除jip.JIP_VERSION。如果您需要,请使用jip.__version__

  • 0.9.11 - 2017-03-11

    • 改进下载错误处理

  • 0.9.10 - 2017-03-09

    • 修复虚拟环境中.jip/cache未隔离的问题

  • 0.9.9 - 2016-10-31

    • 修复可能崩溃的问题

  • 0.9.8 - 2016-07-27

    • 一些小修复

  • 0.9 - 2015-04-23

    • Python 3支持

  • 0.8 - 2014-03-31

    • Windows支持

  • 0.7 - 2011-06-11

    • 所有新的jip.embed和全局安装

    • 增强搜索

    • installdepsresolve添加了dry-run选项

    • install命令和jip.dist添加了排除选项

    • 默认禁用本地Maven仓库

    • 改进依赖项解析速度

    • jip现在在$HOME/.jip/cache/中维护jar和pom的本地缓存

    • 使用argparse以获得更好的命令行UI

    • 添加一些测试用例

  • 0.5.1 - 2011-05-14

    • 并行下载 artifact jar 包

    • 在http请求中包含User-agent头

    • 添加新命令freeze以转储当前状态

    • 错误修复

  • 0.4 - 2011-04-15

    • 新增命令:searchdepslistremove

    • 新增功能jip.dist以实现setuptools集成

    • 支持依赖项排除,感谢vvangelovski

    • 允许在pom.xmlsetup.py中定义项目范围的仓库

    • 代码重构,现在编程友好

    • 将README转换为reStructuredText

    • 迁移到MIT许可证

  • 0.2.1 - 2011-04-07

    • 改进控制台输出格式

    • 正确处理依赖项管理继承的范围

    • 快照管理alpha版本,您可以更新快照 artifact

    • 环境无关配置。每个环境一个.jip

    • 错误修复

  • 0.1 - 2011-01-04

    • 初始版本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

jip-0.9.16.tar.gz (27.6 kB 查看哈希值)

上传时间

构建分布

jip-0.9.16-py3-none-any.whl (29.4 kB 查看哈希值)

上传时间 Python 3

支持者