5

誰かが怒鳴り始める前に:

私はすでに多くのフォーラムでいくつかの同様の質問をしましたが、それらは私の質問に効果的に答えていません.

ここで質問があります。Java は常に私の好みの言語でしたが、ここ数週間はほとんどのニーズで Jython に頼るようになりました。私の質問は当初から実際には 2 つに分岐しており、明確な回答を得たいと切望しています。

A. Python モジュールをそのまま jython にインポートできますか? さまざまなフォーラムでそのような質問をたくさん読みましたが、明確な回答を見たことがありません. Python と Jython にこれを許可しない基本的な違いがあるかどうか、および Python モジュールをまったく変更せずに Jython スクリプトにインポートできるかどうかを知りたいです。

B. Java で Jython クラスを使用するにはどうすればよいですか? jythonc簡単な Web 検索によると、かつては Python コードを Java バイトコードにコンパイルできるという伝説的な存在が存在していましたが、その後消滅しました。ScriptEngineJava から jython コードにアクセスする他の唯一の方法は、クラスを使用してスクリプトを作成するために JSR 223 を使用することです。

  • もしそうなら、どうすればいいですか?たとえば、Java で (Jython で記述された) クラスを拡張するにはどうすればよいでしょうか?
  • そうでない場合、この種の機能を有効にするプロジェクト (作業中または開発中) はありますか?
4

1 に答える 1

2

Aの質問に答えてみます。

広告。A.場合によります。モジュールが Python コードの場合、通常のモジュールとして使用できます。このように、 python-gnupgなどのいくつかのモジュールを使用しました。モジュールがライブラリのようないくつかの C ライブラリを使用して PostgreSQL データベースにアクセスする場合、それらは Jython で使用できません (C コンパイラと PostgreSQL ライブラリおよびヘッダーを使用せずに Python のみを使用する環境にソースからインストールすることさえ不可能です)。しかし、PostgreSQL では JDBC ドライバーを使用できるので問題ありません。

したがって、使用するモジュールがプレーンな Python であるかどうかを確認する必要があります。ほとんどのモジュールには がありますが、簡単setup.pyです。そのようなモジュールをダウンロードし、いくつかのディレクトリに展開して、jython setup.py install次のように使用できます。

C:\python_libs\fpconst-0.7.2>jython setup.py install
running install
running build
running build_py
running install_lib
copying build\lib\fpconst.py -> C:\jython2.5.3\Lib\site-packages
byte-compiling C:\jython2.5.3\Lib\site-packages\fpconst.py to fpconst$py.class
running install_egg_info
Writing C:\jython2.5.3\Lib\site-packages\fpconst-0.7.2-py2.5.egg-info

C:\python_libs\fpconst-0.7.2>jython
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:48:36)
[Java HotSpot(TM) Client VM (Oracle Corporation)] on java1.7.0_09
Type "help", "copyright", "credits" or "license" for more information.
>>> import fpconst
>>> fpconst
<module 'fpconst' from 'fpconst$py.class'>

サポートされていないモジュールの場合、いくつかのエラーが表示されます:

C:\python_libs\pyodbc-2.0.58>jython setup.py install
running install
running build
running build_ext
building 'pyodbc' extension
error: Compiling extensions is not supported on Jython
于 2012-12-03T13:13:02.230 に答える