Python ImportError: после подтверждения установки ни один модуль не назвал «запросы» - PullRequest
0 голосов
/ 28 марта 2019

Я новичок в python, настроил несколько вещей в терминале и сейчас пытаюсь запустить код на python в Atom.

Мои первые три строки в редакторе кода:

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

Итак, моя командная строка по умолчанию отображает:

(prot) 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. #, поэтому я обновил версию в атоме):

3.7.3 (по умолчанию, 27 марта 2019 г., 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, я запустил это в atom:

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

возвращает то же местоположение

/ Пользователи / MyName / Prot / Prot / Библиотека / python3.7 / сайт-пакеты

В атоме, работает

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

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я решил проблему, хотя не уверен, правильно ли я это сделал.Я вышел из Venv и вернулся в свой основной каталог.Установленный robobrowser вернулся в конкретный каталог venv /, из которого я работал.Это решило мою проблему.

0 голосов
/ 29 марта 2019

Вопрос : ошибка импорта: нет модуля с именем '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
...