编程语言
首页 > 编程语言> > python-Jython中的PyCrypto导入问题

python-Jython中的PyCrypto导入问题

作者:互联网

我目前正在尝试让jython内部运行python bittorrent tracker,而我遇到了此问题:
跟踪器使用PyCrypto库,该库是我为自己的平台编译并添加到python路径中的.但是,当我尝试运行代码时,出现以下错误:

Exception in thread "MainThread" Traceback (most recent call last):
  File "./python_dep/BitTorrent-5.2.2/bittorrent-tracker.py", line 21, in <module>
    from BitTorrent.track import track
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/track.py", line 50, in <module>
    from BitTorrent.UI import Size
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/UI.py", line 37, in <module>
    from BitTorrent.MultiTorrent import UnknownInfohash, TorrentAlreadyInQueue, TorrentAlreadyRunning, TorrentNotRunning
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/MultiTorrent.py", line 25, in <module>
    from BitTorrent.Torrent import Feedback, Torrent
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/Torrent.py", line 32, in <module>
    from BitTorrent.ConnectionManager import ConnectionManager
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/ConnectionManager.py", line 22, in <module>
    from BitTorrent.Connector import Connector
  File "./python_dep/BitTorrent-5.2.2/BitTorrent/Connector.py", line 27, in <module>
    from Crypto.Cipher import ARC4
ImportError: cannot import name ARC4
Java Result: 1

我很确定该库位于python路径中,因为命令

import Crypto.Cipher

工作,而

from Crypto.Cipher import ARC4

才不是.
我运行的Java代码如下所示:

package jythTest;

导入org.python.util.PythonInterpreter;

public class Main {

    public static void main(String[] args) {
         PythonInterpreter pythonInterpreter = new PythonInterpreter();
         pythonInterpreter.exec("import sys");


         pythonInterpreter.exec("sys.path.append(\"./python_dep/BitTorrent-5.2.2/\")");
         pythonInterpreter.exec("sys.path.append(\"./python_dep/Twisted-10.0.0/\")");
         pythonInterpreter.exec("sys.path.append(\"./python_dep/Zope-3.4.0/build/lib.linux-i686-2.6\")");
         pythonInterpreter.exec("sys.path.append(\"./python_dep\")");
         pythonInterpreter.exec("sys.path.append(\"./python_dep/pycrypto-2.0.1/build/lib.linux-i686-2.6\")");
         pythonInterpreter.exec("sys.path.append(\"import Crypto.Cipher\")");

         //pythonInterpreter.exec("print sys.path");
         pythonInterpreter.execfile("./python_dep/BitTorrent-5.2.2/bittorrent-tracker.py");
    }
}

在此先感谢任何可以提供任何帮助的人.

解决方法:

之所以发生这种情况,可能是因为pycrypto是C扩展,并且如果没有Java封装为此扩展,Jython将无法调用它.

标签:pycrypto,jython,python
来源: https://codeday.me/bug/20191106/1999492.html