前提
連投失礼いたします。初心者です。
anacondaで仮想環境を作成し、VScodeで実行しています。
今回はgeopyを使用したく、実行したところ、うまくいきませんでした。
実現したいこと
エラーの原因を突き止め、geopyを使用して緯度経度から直線距離を求めたい。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "c:\Users\***.py", line 8, in <module> import geopy.distance File "C:\Users\***\AppData\Roaming\Python\Python39\site-packages\geopy\__init__.py", line 12, in <module> from geopy.geocoders import * # noqa File "C:\Users\***\AppData\Roaming\Python\Python39\site-packages\geopy\geocoders\__init__.py", line 194, in <module> from geopy.geocoders.algolia import AlgoliaPlaces File "C:\Users\***\AppData\Roaming\Python\Python39\site-packages\geopy\geocoders\algolia.py", line 1, in <module> from geopy.compat import Request, urlencode File "C:\Users\***\AppData\Roaming\Python\Python39\site-packages\geopy\compat.py", line 52, in <module> from urllib.request import (HTTPSHandler, ProxyHandler, Request, URLError, ImportError: cannot import name 'HTTPSHandler' from 'urllib.request' (C:\Users\Shima\anaconda3\lib\urllib\request.py)
該当のソースコード
import geopy.distance
試したこと
https://www.yoshiislandblog.net/2021/02/25/pip_issue/
https://atmarkit.itmedia.co.jp/ait/articles/1910/15/news018.html
urllibに関する記事をいろいろと読みましたが、そもそもなぜgeopyでこのエラーが出るのか、
urllibを再インストールするにしても方法がさっぱりわかりません。
細かく教えていただけると、とても助かります。
よろしくお願いいたします。
エラーメッセージの最初は標準?のPython
"C:\Users\***\AppData\Roaming\Python\Python39\site-packages\geopy\"
なのに最後が
ImportError: cannot import name 'HTTPSHandler' from 'urllib.request' (C:\Users\***\anaconda3\lib\urllib\request.py"
とanaconda環境を指しているのがおかしい感じがします。
- Pythonが複数環境インストールされている場合は、それぞれの詳細
- geopyをどの環境にどのような手順でインストールしたか?)
- VSCodeでの実行手順の詳細
などついて記載すると回答がえられやすくなるかと思います。
ありがとうございます!
何もわからないまま、いろいろなサイトを見つつインストールしたため、ごちゃ混ぜになってしまっているかもしれません。
pythonは、単体のpython3.9と3.10をダウンロード
anaconda3で仮想環境(Python39)を作り、
それをVScodeで動かしている(つもり)です。
geopyはインストール方法がわからず(pipが使えず)、
なぜかC:\Users\***\AppData\Roaming\Python\Python27\site-packages
にgeopyファイルが存在していたため、
C:\Users\***\AppData\Roaming\Python\Python39\site-packages
に直接貼り付けました。
python27ファイルに関しては、何故あるのかもよくわかっていません。
実行コードは、
for idx in range(merge_csv_2.shape[0]-1):
dst=geopy.distance.distance(merge_csv_2.iloc[idx, [1,2]], merge_csv_2.iloc[idx+1, [1,2]]).m
td=merge_csv_2.iloc[idx+1, 0] - merge_csv_2.iloc[idx, 0]
if td.seconds==0:
Vel=0
elif td.seconds > 600:
else:
Vel=dst/td.seconds
です。こちらは先輩にいただいたものなので、コード自体に問題はないと思います。
長々とすみません。
なにかわかることがありましたら、よろしくお願いいたします。
手作業でファイルコピーなどしているため、Python全体の状態がおかしくなっていると思います。
PythonとAnacondaと念のためVSCodeもアンインストールし
あらためてAnacondaから再インストールしたほうがよいと思います。
なるほど、ありがとうございます。
その場合、また3つともインストールが必要でしょうか?
(何もわかっておらず、すみません)
例えばanacondaなし、pythonなしなどのほうがうまくいく場合もあるのでしょうか?
一般的にはAnacondaだけでよいと思います。
ありがとうございます。試してみます。
回答1件
あなたの回答
tips
プレビュー