1. ホーム
  2. python

[解決済み] Pythonのurlopenエラー

2022-02-07 03:08:12

質問

synology NAS (DS213J)を購入したばかりで、その上でpythonスクリプトを実行しようとしています。

私の python スクリプト。

  1 #!/opt/bin/python
  2
  3 import urllib
  4 response = urllib.urlopen('http://google.com')
  5 html = response.read()
  6 print html

このスクリプトを実行すると、次のような出力が得られます。 :

Traceback (most recent call last):
  File "/opt/bin/test.py", line 4, in <module>
    response = urllib.urlopen('http://google.com')
  File "/opt/lib/python2.5/urllib.py", line 82, in urlopen
    return opener.open(url)
  File "/opt/lib/python2.5/urllib.py", line 190, in open
    return getattr(self, name)(url)
  File "/opt/lib/python2.5/urllib.py", line 272, in open_http
    import httplib
  File "/opt/lib/python2.5/httplib.py", line 70, in <module>
    import mimetools
  File "/opt/lib/python2.5/mimetools.py", line 6, in <module>
    import tempfile
  File "/opt/lib/python2.5/tempfile.py", line 33, in <module>
    from random import Random as _Random
  File "/opt/lib/python2.5/random.py", line 58, in <module>
    SG_MAGICCONST = 1.0 + _log(4.5)
OverflowError: math range error

また、urllib2も使ってみましたが、成功しませんでした。

スクリプトです。

  1 #!/opt/bin/python
  2
  3 import urllib2
  4 response = urllib2.urlopen('http://google.com')
  5 html = response.read()
  6 print html

コンソール出力 :

Traceback (most recent call last):
  File "/opt/bin/test.py", line 3, in <module>
    import urllib2
  File "/opt/lib/python2.5/urllib2.py", line 92, in <module>
    import httplib
  File "/opt/lib/python2.5/httplib.py", line 70, in <module>
    import mimetools
  File "/opt/lib/python2.5/mimetools.py", line 6, in <module>
    import tempfile
  File "/opt/lib/python2.5/tempfile.py", line 33, in <module>
    from random import Random as _Random
  File "/opt/lib/python2.5/random.py", line 58, in <module>
    SG_MAGICCONST = 1.0 + _log(4.5)
OverflowError: math range error

このエラーの意味が全く分かりません。ググってみましたが、成功しませんでした。上のスクリプトは、映画の字幕をダウンロードするための大きなスクリプトの一部です(大きなスクリプトからエラー部分を取り出して、ここに掲載しました)。

このスクリプトがsynology DS213jで動作していると書いたのは、pythonのインストールに何か原因があるのではないかと思ったからです。一般的に、私は、インストールに問題があった ipkg を使用しています。結局 これ チュートリアルをご覧ください。チュートリアルからブートストラップをインストールした後、私は単に ipkg install python と表示され、パッケージが正常にインストールされました。私のPythonのバージョンは Python 2.5.6 .

ありがとうございます

解決方法は?

問題は #!/opt/bin/python を実行します。 which python をクリックすると、Pythonのバイナリのフルパスが分かります。

ご覧の通り、リストはOKです。

>>> import urllib
>>> response = urllib.urlopen('http://google.com')
>>> html = response.read()
>>> print html
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="iw" dir="rtl"><head><meta content="/images/google_favicon_128.png" itemprop="image"><title>Google</title>[...]</body></html>


私はあなたがすべきだと思います パイソン2.7を使用 または フォロー

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.7

使用方法 ipkg :

ipkg update
ipkg install python27

python2.7 は、Python インタープリタを起動します。