我是python的新手,并在终端中进行了一些设置,现在正尝试在Atom中运行python代码。
我在代码编辑器中的前三行是:
import re
import requests
import robobrowser
运行代码时,我不断得到
ImportError:没有名为robobrowser的模块
我认为这与文件的路径或位置有关,但是我不确定如何检查。
我正在终端中运行的版本:
(prot) MacBook:prot myname$ python --version
Python 3.7.3
(prot) MacBook:prot myname$ pip --version
pip 19.0.3 from /Users/myname/prot/prot/lib/python3.7/site-
packages/pip (python 3.7)
我还使用以下方法创建了一个虚拟环境:
MacBook:prot myname$ python3 -m venv prot
MacBook:prot myname$ source prot/bin/activate
所以我的默认命令行显示为:
(保护)MacBook:prot myname $
运行以下命令表明所需的软件包已存在。
(prot) MacBook:prot myname$ pip3 list
Package Version
-------------- --------
beautifulsoup4 4.7.1
certifi 2019.3.9
chardet 3.0.4
idna 2.8
pip 19.0.3
requests 2.21.0
robobrowser 0.5.3
setuptools 40.8.0
six 1.12.0
soupsieve 1.9
urllib3 1.24.1
Werkzeug 0.15.1
编辑(根据评论进行更新):
import sys
print(sys.version)
在Atom输出中(用于说2.#,所以我在atom中更新了版本):
3.7.3(默认值,2019年3月27日,09:23:15)
[与GCC 4.2.1兼容的Apple LLVM 10.0.0(clang-1000.0.42)]
Robobrowser正确显示在终端中:
(prot) MacBook:prot myname$ pip3 show robobrowser
Name: robobrowser
Version: 0.5.3
Summary: Your friendly neighborhood web scraper
Home-page: https://github.com/jmcarp/robobrowser
Author: Joshua Carp
Author-email: jm.carp@gmail.com
License: MIT
Location: /Users/myname/prot/prot/lib/python3.7/site-packages
Requires: beautifulsoup4, requests, six, Werkzeug
Required-by:
要检查剩余的robobrowser问题,我在原子中运行了此
:from pip import _internal
_internal.main(['list'])
并得到了此消息(注意缺少robobrowser):
Package Version
--------------- --------
cached-property 1.5.1
certifi 2019.3.9
chardet 3.0.4
idna 2.8
pip 19.0.3
python-dateutil 2.8.0
requests 2.21.0
setuptools 40.8.0
six 1.12.0
urllib3 1.24.1
wheel 0.33.1
在终端中,运行
pip show requests
pip show robobrowser
返回相同的位置
/Users/myname/prot/prot/lib/python3.7/site-packages
在原子中运行
import sys
print(sys.path)
输出
['','/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python37.zip','/usr/local/Cellar/python/3.7。 3 / Frameworks / Python.framework / Versions / 3.7 / lib / python3.7','/ usr / local / Cellar / python / 3.7.3 / Frameworks / Python.framework / Versions / 3.7 / lib / python3.7 / lib -dynload','/ usr / local / lib / python3.7 / site-packages']
所以我想我需要将以上位置添加到sys.path
答案 0 :(得分:0)
问题:ImportError:没有名为“ robobrowser”的模块
运行以下命令,验证是否可以安装找到module
,并且Location
在sys.path
中。
import sys
import pkg_resources as pkg
sys_path = sys.path
ws_entries = pkg.WorkingSet().entries
print('Python :{}'.format(sys.version.split('\n')[0]))
key = 'robobrowser'
key_found = False
for dist in pkg.working_set:
if key in dist.key:
key_found = True
print('Package :{}'.format(dist.project_name))
print('Version :{}'.format(dist.version))
print('Location :{}'.format(dist.location))
importable = False
for info in pkg.find_distributions(dist.location, only=True):
if key in info.key:
importable = True
break
if importable:
print('Importable: Location were on sys.path')
else:
print('Not importable: Unless {} were added to sys.path.'.format(dist.location))
print('sys.path :{}'.format(dist.location in sys_path))
print('WorkingSet.entries:{}'.format(dist.location in ws_entries))
else:
if not key_found:
print("No package like '{}' found.".format(key))
输出:示例
key = 'requests'
Python : 3.5.3 (default, Jan 19 2017, 14:11:04) Package : requests Version : 2.19.1 Location : /usr/local/lib/python3.5/dist-packages Importable: Location were on sys.path sys.path : True WorkingSet.entries: True
答案 1 :(得分:0)
我解决了问题,但不确定是否以正确的方式这样做。我退出venv,然后回到我的主目录。安装的robobrowser然后回到我正在处理的特定venv /目录中。这解决了我的问题。