我知道我可以用Java安装Jython,并且我可以在使用Python的地方使用Jython。 Jython shell工作正常。
在Jython中,如何安装我通常通过lxml
或Scrappy
pip
和easy_install
等库>
答案 0 :(得分:38)
某些Python模块(如lxml
)需要C语言中的组件。这些模块在Jython中不起作用。
大多数Python包都可以正常工作,您可以使用与CPython中使用的相同的工具来安装它们。这是described in Appendix A of Jython Book:
要获取setuptools,请从中下载ez_setup.py http://peak.telecommunity.com/dist/ez_setup.py。然后,去吧 您离开下载文件并执行的目录:
$ jython ez_setup.py
[easy_install脚本将]安装到bin目录中 Jython安装(示例中为
/home/lsoto/jython2.5.0/bin
以上)。如果你经常与Jython一起工作,那么这是一个好主意 将此目录添加到PATH环境变量中,因此您不需要 每次要使用easy_install或时都必须键入整个路径 安装到此目录的其他脚本。
在Jython中安装setuptools之后自己测试,pip安装正确:
$ sudo /usr/bin/jython2.5.2b1/bin/easy_install pip
Searching for pip
[...]
Installing pip-2.5 script to /usr/bin/jython2.5.2b1/bin
Installing pip script to /usr/bin/jython2.5.2b1/bin
Installed /usr/bin/jython2.5.2b1/Lib/site-packages/pip-1.0.2-py2.5.egg
Processing dependencies for pip
Finished processing dependencies for pip
$ sudo /usr/bin/jython2.5.2b1/bin/pip install bottle
Downloading/unpacking bottle
Downloading bottle-0.9.6.tar.gz (45Kb): 45Kb downloaded
Running setup.py egg_info for package bottle
Installing collected packages: bottle
Running setup.py install for bottle
Successfully installed bottle
Cleaning up...
$ jython
Jython 2.5.2b1 (Release_2_5_2beta1:7075, Jun 28 2010, 07:44:20)
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_26
Type "help", "copyright", "credits" or "license" for more information.
>>> import bottle
>>> bottle
<module 'bottle' from '/usr/bin/jython2.5.2b1/Lib/site-packages/bottle$py.class'>
>>>
答案 1 :(得分:10)
从v2.7b4开始,Jython发行版包含the ensurepip module,简化了pip和setuptools的安装:
jython -m ensurepip
小心sys.platform=='win32' issue会妨碍您使用依赖此方法确定主机平台的PyPI包。
答案 2 :(得分:7)
尽管你拥有Java库的强大功能,但不是无法安装一些python C库的限制。
例如,您最好使用Jsoup代替Beautiful soup,或者使用Jtidy这样的完整解决方案。
使用Jaxp代替lxml。
另一个符合您要求的选项是NekoHTML
答案 3 :(得分:1)
我安装了CPython和Jython。如果我想通过pip在Jython中安装包,我就会这样做。
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
例如,在jython中安装机器人框架(因为我想用Java编写关键字库),我做了
jython -m pip install <package_name>