Невозможно импортировать модуль Python, который определенно установлен (механизировать)
Непрекращающиеся проблемы с установкой python (2.7.3) на мою машину с Ubuntu 12.04 и импортом модулей.
Здесь у меня возникла проблема, когда я определенно установил механизацию как на своей машине, так и в различных виртуальных средах.
Я попытался установить из pip, easy_install и через python setup.py install
из этого репо: https://github.com/abielr/mechanize.
Все это безрезультатно, так как каждый раз, когда я вхожу в свой питон, я получаю:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>>
На других компьютерах, на которых я его устанавливаю, проблем нет (например, Mac или машина с Windows на работе, все хорошо, устанавливает и импортирует как обычно).
Это в значительной степени сводит меня с ума в этот момент, и я просто хочу сделать некоторую работу.
ОБНОВЛЕНИЕ ИНФОРМАЦИИ (в ответ на комментарии):
Из положенного easy_install mechanize
и пути:
<me>@<host>:~$ sudo easy_install mechanize
[sudo] password for <me>:
Processing mechanize
Writing /home/<me>/mechanize/setup.cfg
Running setup.py -q bdist_egg --dist-dir /home/<me>/mechanize/egg-dist-tmp-zXwJ_d
warning: no files found matching '*.html' under directory 'docs'
warning: no files found matching '*.css' under directory 'docs'
warning: no files found matching '*.js' under directory 'docs'
mechanize 0.2.6.dev-20130112 is already the active version in easy-install.pth
Installed /usr/local/lib/python2.7/dist-packages/mechanize-0.2.6.dev_20130112-py2.7.egg
Processing dependencies for mechanize==0.2.6.dev-20130112
Finished processing dependencies for mechanize==0.2.6.dev-20130112
<me>@<host>:~$ ^C
<me>@<host>:~$ which pip
/home/<me>/bin/pip
<me>@<host>:~$ which python
/home/<me>/bin/python
<me>@<host>:~$ which easy_install
/home/<me>/bin/easy_install
<me>@<host>:~$
ВТОРОЕ ОБНОВЛЕНИЕ: Кажется, что-то с Mechanize, как будто я добавляю любой другой случайный пакет через pip, проблем нет (в этом случае html5lib
)
ТРЕТЬЕ ОБНОВЛЕНИЕ (@DSM)
1)
>>> sys.path
['', '/home/<me>/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', '/home/<me>/local/lib/python2.7/site-packages/virtualenvwrapper-2.11-py2.7.egg', '/home/<me>/src/geopy', '/home/<me>/local/lib/python2.7/site-packages/BeautifulSoup-3.2.0-py2.7.egg', '/home/<me>/local/lib/python2.7/site-packages/django_sorting-0.1-py2.7.egg' ... <so on and so forth but mechanize is not here>]
>>>
2) *pretty long output of which most looks like:*
<me>@<host>:~$ ls -laR /usr/local/lib/python2.7/dist-packages/mech*
/usr/local/lib/python2.7/dist-packages/mechanize:
total 1144
...lots of other files, pretty much same permissions...
-rw-r--r-- 1 root staff 24916 Jan 11 01:19 _mechanize.py
...lots of other files...
3)
>>> import imp
>>> imp.find_module("mechanize")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>>
ЧЕТВЕРТОЕ РЕДАКТИРОВАНИЕ (это становится нелепым:/): Это похоже на проблему, с которой я сталкивался ранее ( Полное удаление и новая установка python в Ubuntu 12.04), где, если я запускаю все с помощью sudo, это нормально, но я не не знаю, должен ли я сделать это... что там с разрешениями?
42 ответа
В моем случае это проблема разрешения. Пакет каким-то образом был установлен только с правами root rw, другой пользователь просто не может войти в него!
У меня была такая же проблема: скрипт с import colorama
Кидал и ImportError, но sudo pip install colorama
говорил мне "пакет уже установлен".
Мое исправление: запустить pip без sudo: pip install colorama
, Затем Пип согласился, что его нужно установить, установил, и мой скрипт запустился.
Моя среда Ubuntu 14.04 32-битная; Я думаю, что видел это до и после того, как активировал свой virtualenv.
ОБНОВЛЕНИЕ: еще лучше, используйте python -m pip install <package>
, Преимущество этого состоит в том, что, поскольку вы выполняете конкретную версию python, в которую вы хотите поместить пакет, pip однозначно установит пакет в "правильный" python. Опять же, не используйте sudo в этом случае... тогда вы получите пакет в нужном месте, но, возможно, с (нежелательными) правами root.
Это проблема с питоном.
В моем случае Python установлен в:
/Library/Frameworks/Python.framework/Versions/2.6/bin/python,
и внутри python2.6 нет каталога site-packages.
Пакет (SOAPpy), который я установил с помощью pip, находится
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
И сайт-пакет не находится в пути Python, все, что я сделал, это постоянно добавляю сайт-пакеты в PYTHONPATH.
- Открыть терминал
- Введите открытый.bash_profile
В появившемся текстовом файле добавьте эту строку в конце:
экспорт PYTHONPATH=$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
- Сохраните файл, перезапустите Терминал, и все готово
Я смог исправить эту проблему с помощью комбинированного подхода. Во-первых, я последовал совету Криса, открыл командную строку и набрал "pip show packagename". Здесь указывалось расположение установленного пакета.
Затем я открыл python и набрал "import sys", затем "sys.path", чтобы показать, где мой python ищет все пакеты, которые я импортирую. Увы, местоположение, показанное на первом шаге, НЕ было в списке.
Последний шаг, я набрал 'sys.path.append('package_location_seen_in_step_1'). При желании вы можете повторить второй шаг, чтобы увидеть местоположение в списке.
Тестовый шаг, попробуйте импортировать пакет снова... он работает.
Обратная сторона? Это временно, и вам нужно добавлять его в список каждый раз.
Механизм импорта Python действительно работает, поэтому:
- Твой ПИТОНПАТ не прав,
- Ваша библиотека не установлена там, где вы думаете
- У вас есть другая библиотека с таким же именем, маскирующая эту
Я бился головой об монитор, пока молодой хип-стажер не сказал мне, что секрет заключается в том, чтобы "установить python setup.py" внутри каталога модуля.
По некоторым причинам запуск установки оттуда заставляет это только работать.
Чтобы было понятно, если ваш модуль называется "foo":
[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root 118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root 93 Jun 21 15:23 foo
-rw-r--r-- 1 root root 416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->
Если вы попытаетесь запустить setup.py из любого другого каталога, вызвав его путь, вы получите потерянную установку.
НЕ РАБОТАЕТ:
python /root/foo/setup.py install
РАБОТАЕТ:
cd /root/foo
python setup.py install
Я столкнулся с этим при попытке использовать брелок, который я установил через sudo pip install keyring
, Как упоминалось в других ответах, это проблема с разрешениями в моем случае.
Что сработало для меня:
- Неустановленный брелок:
sudo pip uninstall keyring
- Я использовал судо
-H
опция и переустановленная связка ключей:sudo -H pip install keyring
Надеюсь это поможет.
Я новичок в Python. Я исправил эту проблему, изменив путь интерпретатора проекта.File -> Settings -> Project -> Project Interpreter
Убедитесь, что вы используете одну и ту же версию Python в интерпретаторе вашей IDE или редакторе кода и в вашей системе. Например, проверьте свою версию Python в терминале с помощьюpython3 --version
И проверьте версию Python для интерпретатора в VSCode с помощьюcmd+shift+p
-> Python: выберите интерпретатор -> выберите ту же версию, которую вы видите в своем терминале.
Я не мог заставить свою PYTHONPATH работать должным образом. Я понял добавление export
исправил проблему:
(сделал работу)
export PYTHONPATH=$PYTHONPATH:~/test/site-packages
против
(не работал)
PYTHONPATH=$PYTHONPATH:~/test/site-packages
Это решение подходит не всем. Только для определенного набора новичков (LIKE ME), которые выполнили определенный набор действий. Ни один из приведенных выше ответов не помог мне.
Итак, что вызвало проблему: раньше у меня был проект с настройкой venv внутри root. Позже я создал нового пользователя и решил переместить проект этому пользователю. И вместо того, чтобы перемещать только исходные файлы и заново устанавливать зависимости, я переместил весь проект вместе с папкой venv новому пользователю (потому что я не знал об этих проблемах). После этого установленные мной зависимости добавлялись в
global site-packages
вместо того, что находится внутри папки venv. Таким образом, код, работающий внутри этого окружения, не смог получить доступ к этим зависимостям.
Решение: просто удалили папку venv и воссоздали ее заново.
$ deactivate
$ rm -rf venv
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
Что-то, что сработало для меня, было:
python -m pip install -user {package name}
Команда не требует sudo. Это было проверено на OSX Mojave.
Была и эта проблема... пакет был установлен на Python 3.8.0, но VS Code запускал мой скрипт с использованием более старой версии (3.4)
исправить в терминале:
py.py
Убедитесь, что вы устанавливаете пакет в правильную версию Python.
В моем случае я бегал pip install Django==1.11
и это не будет импортировать из python
переводчик.
Просматривая команды Пипа, которые я нашел pip show
который выглядел так:
> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...
Обратите внимание, что место говорит "3.4". Я обнаружил, что python
-команда была связана с python2.7
/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7
Прямо рядом с этим я нашел ссылку под названием python3
так что я использовал это. Вы также можете изменить ссылку на python3.4
, Это тоже исправит.
У меня была точно такая же проблема, помогло обновление:
python3 -m pip install --upgrade pip setuptools wheel
После этого переустановите пакет, и он должен работать нормально :)
Дело в том, что пакет собран неправильно, еслиsetuptools
Старый.
У меня была установлена colorama через pip, и я получал "ImportError: No module named colorama"
Итак, я поискал с помощью "find", нашел абсолютный путь и добавил его в скрипт следующим образом:
import sys
sys.path.append("/usr/local/lib/python3.8/dist-packages/")
import colorama
И это сработало.
В моем случае это была проблема с отсутствующим файлом init.py в модуле, который я хотел импортировать в среде Python 2.7.
В Python 3.3+ есть неявные пакеты пространства имен, которые позволяют создавать пакеты без файла init.py.
Также убедитесь, что вы не путаете pip3
с pip
. Я обнаружил, что пакет установлен сpip
не работал с python3
и наоборот.
Если другие упомянутые ответы вам не подходят, попробуйте удалить кэш pip и переустановить пакет. Моя машина работает под управлением Ubuntu14.04, и она находилась под ~/.cache/pip
, Удаление этой папки помогло мне.
Не уверен, что это кому-нибудь поможет, но у меня была похожая проблема на Mac M1 с zsh. Оказывается, я установил команду псевдонима в своем файле .zshrc с тем же именем, что и моя команда python (python3).
Чтобы решить эту проблему, мне просто нужно было убрать команду. я побежал:
unalias python3
как с моего домашнего терминала, так и с терминала в Visual Studio.
В моем случае (виртуальная машина Ubuntu 20.04 на хосте WIN10) у меня неупорядоченная ситуация со многими установленными версиями Python и различными точками общей библиотеки (установленными с помощью pip во многих точках файловой системы). Я имею в виду версию Python 3.8.10. После многих тестов я нашел предложение поиска в Google (но, извините, у меня нет ссылки). Вот что я сделал, чтобы решить проблему:
Из сеанса оболочки на виртуальной машине Ubuntu 20.04 (внутри дома, в моем случае /home/hduser) я начал сеанс Jupyter Notebook с помощью команды «jupyter note».
Затем, когда jupyter работал, я открыл файл .ipynb, чтобы давать команды.
Во-первых: список pip -> дайте мне список установленных пакетов, а sympy не было (хотя я установил его с помощью команды «sudo pip install sympy».
Наконец, с помощью команды !pip3 install sympy (внутри сеанса ноутбука jupyter). Я решил проблему, вот снимок экрана:
Теперь со списком !pip пакет «sympy» присутствует и работает:
У меня была похожая проблема (в Windows), и основной причиной в моем случае было программное обеспечение АНТИВИРУС! Он имеет функцию "Auto-Containment", которая оборачивает запущенный процесс какой-то виртуальной машиной. Симптомы: pip install somemodule
прекрасно работает в одном окне cmd-line и import somemodule
происходит сбой при выполнении из другого процесса с ошибкой
ModuleNotFoundError: No module named 'somemodule'
Надеюсь, это сэкономит кому-то время:)
Это работает!!!
Это часто случается, когда модуль устанавливается в более старую версию python или другую директорию, не стоит беспокоиться, так как решение простое.
- импортировать модуль из каталога, в который установлен модуль. Вы можете сделать это, сначала импортировав питон sys
Затем модуль импортируется из пути, по которому установлен модуль
import sys
sys.path.append("directory in which module is installed")
import <module_name>
В моем случае я предположил, что пакет был установлен, потому что он появился в выводеpip freeze
. Однако именноsite-packages/*.dist-info
папки достаточно, чтобы pip указал ее как установленную, несмотря на отсутствие фактического содержимого пакета (возможно, из-за случайного удаления). Это происходит , даже если все параметры пути указаны правильно, и если вы попытаетесьpip install <pkg>
он скажет «требование уже выполнено».
Решение состоит в том, чтобы вручную удалитьdist-info
папка, чтобы pip понял, что содержимое пакета отсутствует. Затем при новой установке должно быть повторно заполнено все, что было случайно удалено.
Я решил свою проблему: одни и те же библиотеки работали нормально в одном проекте (A), но импорт тех же библиотек в другой проект (B) вызвал ошибку. Я использую Pycharm в качестве IDE в ОС Windows. Итак, попробовав множество потенциальных решений и не сумев решить проблему, я сделал следующие две вещи (удалил папку Venv и перенастроил интерпретатор):
1-В проекте (B) была папка с именем ("venv"), расположенная во внешних библиотеках /. Я удалил эту папку.
2-шаг 1 (удаление папки "venv") вызывает ошибку в конфигурации интерпретатора Python, и в верхней части экрана отображается сообщение "Неверный интерпретатор python выбран для проекта" и "настроить интерпретатор python", выберите эту ссылку и она открывает новое окно. В раскрывающемся списке "Project Interpreter" есть красная линия, показывающая предыдущий недопустимый интерпретатор. Теперь откройте этот список и выберите Python Interpreter(в моем случае это Python 3.7). Нажмите "Применить" и "ОК" внизу, и все готово.
Примечание. Возможно, проблема заключалась в том, что виртуальная среда моего проекта (B) не распознавала уже установленные и рабочие библиотеки.
python -m pip install
- помог мне решить эту проблему. Я начал сталкиваться с этой проблемой после обновления python to 2.7.14
(от 12
)
Сегодня я нашел этот пакетsetup.py
также вызовет эту проблему.
У меня есть установка сclassifiers < 3
setup(
name='data_reader',
version='0.1',
description='data_reader by Mithril ',
long_description=long_description,
author='Mithril',
classifiers=[
'Development Status :: 1 - Beta',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Intended Audience :: Developers',
'Operating System :: OS Independent',
"License :: GPLv3",
'Topic :: Internet :: WWW/HTTP',
'Topic :: Software Development :: Libraries :: Tools',
'Topic :: Software Development :: Libraries :: Python Modules',
],
)
И я использовал python 3.7 в conda env, я нашел
pip install .
# or
pip install git+https://github.com/eromoe/data_reader
Однако все удалосьimport data_reader
подниматьnot found
.
После некоторого тестирования копайте это только после измененияclassifiers
к
classifiers=[
'Development Status :: 1 - Beta',
"Programming Language :: Python :: 3",
'Intended Audience :: Developers',
'Operating System :: OS Independent',
"License :: GPLv3",
'Topic :: Internet :: WWW/HTTP',
'Topic :: Software Development :: Libraries :: Tools',
'Topic :: Software Development :: Libraries :: Python Modules',
],
Установил заново, импорт стал нормальным!
Большинство возможных случаев уже были рассмотрены в решениях, просто поделившись своим случаем, мне случилось, что я установил пакет в одной среде (например, X
) и я импортировал пакет в другую среду (например, Y
). Поэтому всегда убедитесь, что вы импортируете пакет из среды, в которой вы установили пакет.
Как мой друг сделал для меня сегодня, вот что мне помогло (я использую Windows):
Нажмите "Настройка" -> "Проект" -> "Интерпретатор проекта". Здесь, в окне справа, слева есть строка с заголовком "Project Interpreter". Щелкните эту строку, и откроется несколько дополнительных строк.
Теперь нажмите строку "Показать все". Откроется окно. В этом окне нажмите маленький значок "+" в правом верхнем углу.
Откроется новое окно. Слева есть 4 вкладки, нажмите самую верхнюю, на которой написано "Virtualenv Environment". Теперь в окне справа отметьте опцию "Существующая среда". Строка "Переводчик" станет хорошо видна. Нажмите кнопку "..." справа от строки.
Теперь откроется окно просмотра. Перейдите в каталог, в который вы установили сам Python. Не тот, что с PyCharm. Когда вы попадете туда, выберите файл python.exe и нажмите ОК (окно исчезнет).
Снова нажмите ОК (это окно тоже исчезнет).
Теперь в этом окне убедитесь, что созданная вами новая строка отмечена, и снова нажмите OK.
Теперь все установленные пакеты должны быть видны в интерпретаторе проекта и прочитаны вашей программой.
Я знаю, что это очень старый пост, но для меня у меня была проблема с установленным 32-битным питоном и 64-битным питоном. Как только я удалил 32-битный питон, все заработало, как должно.