現在、とある書物を読みながらUbuntu16.04、Pycharm、Python3.6、Chainerなどを用いて文章の自動生成を試みているのですが
「このプログラムの詳細については解説しませんが、Python3のurllibライブラリを使って(略)」と書かれていたため
ターミナルからpipの最新バージョンでpip install urllibとコマンドを打ったところ、「Could not find a version that satisfies the requirement urllib(from versions:(何も書かれていない)o matching distribution found for urllib」
と表示され、pip3でも同じことをやっても同じエラー結果でした。
無知なため、urllibについて検索したところ、Python3ではurllib3というものが出ているらしくpip install urllib3と入力したところ、インストールに成功しました。
ですが、urllib3の公式サイトのリファレンスを見たところ
urllib.parseという記述がなく、..site-packages/urllib3を見てもparse.pyというあるべきファイル自体が見当たらなく、これはpython3でurllib3になって仕様が変わったためにエラーが出るんじゃ・・・でも本の著者の環境はPython3.5.2と書いてあるしと思いつつ試しにpython3.6で以下のコードを実行すると
python
1# -*- coding: utf-8 -*- 2import sys 3import codecs 4import re 5import urllib.parse 6import urllib.request 7 8sys.stdout = codecs.getwriter('utf_8')(sys.stdout) 9 10urls = [ \ 11 u'不思議の国のアリス', \ 12 u'ふしぎの国のアリス', \ 13 u'鏡の国のアリス', \ 14 u'地下の国のアリス', \ 15 ] 16for url in urls: 17 # 日本語版Wikipediaのページ 18 with urllib.request.urlopen('https://ja.wikipedia.org/wiki/' + \ 19 urllib.parse.quote_plus(url)) as response: 20 # URLから読み込む 21 html = response.read().decode('utf-8') 22 23 # 本文の<p>タグを取得する 24 all = re.findall(r'<p>.*</p>', html) 25 26 # 半角文字を削除して出力する 27 for a in all: 28 a = re.sub(r'[\s!-~]*', '', a) 29 # 「。」を改行にする 30 a = re.sub(r'。', '\n', a) 31 sys.stdout.buffer.write(a.encode('utf-8'))
予想通りImportError:No module named parseとエラーが表示されました。
試したことをまとめますと
1:pip install urllib→できない
pip install urllib3→urllib3はインストールできた、でもparse.pyがないからurllib.parseをインポートできない
検索したところ、urllib自体はpython3の標準ライブラリ?なのになぜかurllib.parseがインポートできない(ImportError: No module named parse)
2:検索して辿り着いたGit-hubにあったurllibのparse.pyのソースコードをコピーし、こちら側にparse.pyを作りそれにコピペし..site-packages/urllib3/内に入れ、urllib3.parseとしてインポートできるようにしましたが
文字コードが違うというエラーが出たため、できませんでした。
3:文字コードエラーを直すため
-- coding: utf-8 --
を記述しましたが、今度は別の文字コードにしてくれと言われできませんでした。
SyntaxError: Non-UTF-8 code starting with '\xfe'うんぬん。
どうすればurllib.parseをインポートできるようになるのでしょうか。
初心者なので基礎的なところで躓いているのかもしれませんが、何卒よろしくお願い致します。
【追記1】
ターミナル上でimport urllib.parseとimport urllib.requestを
実行してみたところエラーもなくインポートできました。
Pycharm上でのみ起こる現象のようです。
【追記2】
anacondaが最新版ではなかったようで、最新版にしたところ
python3.6/urllib/というフォルダーが作成され、parse.pyが入っておりました。
ですが、ImportError: No module named parseと表示されてしまいます。
これは、なぜでしょうか..。
回答1件
あなたの回答
tips
プレビュー