Nie można zaimportować modułu Pythona, który jest zdecydowanie zainstalowany (mechanize)

Trwają problemy z instalacją Pythona (2.7.3) na moim Ubuntu 12.04 i importowaniem modułów.

Tutaj mam problem, w którym zdecydowanie zainstalowałem mechanize zarówno na mojej maszynie, jak i w różnych środowiskach wirtualnych.

Próbowałem zainstalować z pip, easy_install i via {[3] } z tego repo: https://github.com/abielr/mechanize .

Wszystko to na próżno, ponieważ za każdym razem, gdy wchodzę do mojego Pythona interactive, dostaję:

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
>>> 

Inne Komputery, na których to instaluję nie mają problemu(komputer Mac lub komputer z Windows w pracy, na przykład, wszystko jest dobre, instaluje i importuje jak zwykle).

Doprowadza mnie to do szału, a ja po prostu chcę trochę popracować.

Informacje o aktualizacji (w odpowiedzi na komentarze):

Out of easy_install mechanize and paths:

<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>:~$ 

DRUGA AKTUALIZACJA: Wydaje się być coś z mechanize, jakby dodać inny losowy Pakiet przez pip, nie ma problem (w tym przypadku html5lib)

TRZECIA AKTUALIZACJA (@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
>>>

Czwarta edycja (robi się śmiesznie :/): Jest to podobne do problemu, który miałem wcześniej (całkowite usunięcie i świeża instalacja Pythona na Ubuntu 12.04), gdzie jeśli uruchamiam wszystko z sudo, jest w porządku, ale nie wiem, czy powinienem to zrobić... co z uprawnieniami?

Author: cmaher, 2013-01-12

15 answers

W moim przypadku jest to problem z pozwoleniem. Pakiet został jakoś zainstalowany z uprawnieniami root RW tylko, inny użytkownik po prostu nie może rw do niego!

 60
Author: Paul Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-04 17:55:33

Miałem ten sam problem: skrypt z import colorama rzucał i ImportError, ale sudo pip install colorama mówił mi "pakiet już zainstalowany".

Moja poprawka: Uruchom pip bez sudo: pip install colorama. Potem PIP zgodził się, że trzeba go zainstalować, zainstalowałem go i uruchomił się mój skrypt.

Moim środowiskiem jest Ubuntu 14.04 32-bit; myślę, że widziałem to przed i po aktywacji mojego virtualenv.

UPDATE : jeszcze lepiej, Użyj python -m pip install <package>. Zaletą tego jest to, że wykonujesz konkretne wersja Pythona, w której chcesz umieścić pakiet, pip jednoznacznie zainstaluje pakiet w" prawym " Pythonie. Ponownie, nie używaj w tym przypadku sudo... następnie dostajesz pakiet we właściwym miejscu, ale prawdopodobnie z (niechcianymi) uprawnieniami roota.

 36
Author: Dan H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 23:37:39

To problem ścieżki Pythona.

W moim przypadku mam zainstalowany python w:

/ Library / Framework/Python.framework / Versions/2.6 / bin / python,

I nie ma katalogu site-packages w python2. 6.

Pakiet (SOAPpy), który zainstalowałem przez pip znajduje się

/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/

I site-package nie znajduje się w ścieżce Pythona, jedyne co zrobiłem to dodanie site-packages do PYTHONPATH na stałe.

  1. Otwórz Terminal
  2. Typ otwarty .bash_profile
  3. W pliku tekstowym, który się pojawi, dodaj tę linię na końcu:

    Export PYTHONPATH = $PYTHONPATH:/System/Library/frameworks / Python.framework / Versions/2.6/lib/python2.6 / site-packages /

  4. Zapisz plik, uruchom ponownie Terminal i gotowe
 11
Author: user1552891,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-20 04:59:40

Mechanizm importu Pythona działa, tak naprawdę, albo:

  1. twój PYTHONPATH jest zły,
  2. Twoja biblioteka nie jest zainstalowana tam, gdzie myślisz, że jest
  3. masz inną bibliotekę o tej samej nazwie maskującą tę
 5
Author: Ali Afshar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-12 17:19:35

Walałem głową o monitor, dopóki Młody stażysta nie powiedział mi, że sekret polega na "Pythonie". setup.py install " wewnątrz katalogu modułu.

Z jakiegoś powodu uruchomienie konfiguracji stamtąd sprawia, że po prostu działa.

Aby było jasne, jeśli nazwa Twojego modułu to "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-->

If you try to run setup.py z dowolnego innego katalogu wywołując jego ścieżkę, kończysz z borked install.

NIE DZIAŁA:

python /root/foo/setup.py install

Robi Praca:

cd /root/foo
python setup.py install
 3
Author: Locane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-21 22:32:23

W moim przypadku miałem uruchomiony pip install Django==1.11 i nie importował z interpretera python.

Przeglądając polecenia Pipa znalazłem pip show które wyglądały tak:

> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...

Zauważ, że lokalizacja mówi "3.4". Okazało się, że polecenie python-jest powiązane z python2.7

/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7

Tuż obok znalazłem link o nazwie python3 więc go użyłem. Możesz również zmienić link na python3.4. To też by to naprawiło.

 2
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-19 10:39:42

Nie mogłem sprawić, by Moja ścieżka PYTHONPATH działała prawidłowo. Zdałem sobie sprawę, że dodanie export naprawiło problem:

(did work)

export PYTHONPATH=$PYTHONPATH:~/test/site-packages

Vs.

(nie działa)

PYTHONPATH=$PYTHONPATH:~/test/site-packages
 1
Author: George Weber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 17:59:32

Napotkałem to podczas próby użycia breloka, który zainstalowałem przez sudo pip install keyring. Jak wspomniano w innych odpowiedziach, w moim przypadku jest to problem z uprawnieniami.

Co u mnie zadziałało:

  1. odinstalowany brelok:
    • sudo pip uninstall keyring
  2. użyłem opcji sudo -H i ponownie zainstalowałem keyring:
    • sudo -H pip install keyring
Mam nadzieję, że to pomoże.
 1
Author: blackleg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 05:56:08

Miałem dokładnie taki problem, ale żadna z powyższych odpowiedzi nie zadziałała. Doprowadzało mnie to do szału, dopóki nie zauważyłem tego sys.ścieżka była inna po zaimportowaniu z projektu macierzystego. Okazało się, że użyłem importlib do napisania małej funkcji, aby zaimportować plik nie w hierarchii projektu. Zły pomysł: zapomniałem, że to zrobiłem. Co gorsza, proces importu został zablokowany przez sys./ align = "left" / Bardzo zły pomysł.

Rozwiązaniem było powstrzymanie tego i po prostu umieść plik potrzebny do zaimportowania do projektu. Innym podejściem byłoby umieszczenie pliku we własnym projekcie, ponieważ musi on być odbudowywany od czasu do czasu, a odbudowa może lub nie musi pokrywać się z odbudową głównego projektu.

 0
Author: user2489809,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-17 19:08:39

Miałem ten problem z 2.7 i 3.5 zainstalowanych w moim systemie próbując przetestować Bot telegram z Python-Telegram-Bot .

Nie mogłem uruchomić go po zainstalowaniu z pip i pip3, z sudo lub bez. Zawsze mam:

Traceback (most recent call last):
  File "telegram.py", line 2, in <module>
    from telegram.ext import Updater
  File "$USER/telegram.py", line 2, in <module>
    from telegram.ext import Updater
ImportError: No module named 'telegram.ext'; 'telegram' is not a package

Poprawne odczytanie Komunikatu o błędzie mówi mi, że python szuka w bieżącym katalogu telegram.py. I tak, leżał tam skrypt o nazwie telegram.py i to zostało załadowane przez Pythona, kiedy zadzwoniłem import.

Wniosek, upewnij się, że nie masz package.py w bieżącym katalogu roboczym podczas próby zaimportowania. (I dokładnie odczytaj komunikat o błędzie).

 0
Author: Patrick B.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-10 07:09:29

python -m pip install - pomógł mi rozwiązać ten problem. Zacząłem zmierzyć się z tym problemem po aktualizacji python to 2.7.14 (z 12)

 0
Author: Rajesh K Jeyapaul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-07 12:13:34

Udało mi się rozwiązać ten problem za pomocą podejścia połączonego. Najpierw posłuchałem Rady Chrisa, otworzyłem wiersz poleceń i wpisałem "PIP show packagename" Podało to lokalizację zainstalowanego pakietu.

Następnie otworzyłem python i wpisałem 'import sys', a następnie ' sys.path', aby pokazać, gdzie mój python szuka wszystkich importowanych pakietów. Niestety, lokalizacja pokazana w pierwszym kroku nie była na liście.

Ostatni krok, wpisałem ' sys./ align = "left" / append ('package_location_seen_in_step_1'). Ty opcjonalnie można powtórzyć krok drugi, aby zobaczyć lokalizację na liście.

Krok testowy, spróbuj ponownie zaimportować pakiet... to działa.

Minusem? Jest tymczasowy i za każdym razem należy go dodawać do listy.

 0
Author: MJ_,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-01 22:34:23

Miałem podobny problem (na Windows) i główną przyczyną w moim przypadku było oprogramowanie antywirusowe ! Posiada funkcję "Auto-powstrzymywania", która owija uruchomiony proces jakąś maszyną wirtualną. Objawy są następujące: pip install somemodule działa dobrze w jednym oknie linii cmd i import somemodule nie działa po wykonaniu z innego procesu z błędem

ModuleNotFoundError: No module named 'somemodule'

Mam nadzieję, że zaoszczędzi to komuś trochę czasu:)

 0
Author: Dima Gershman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-07 06:42:49

Po zainstalowaniu przez easy_install LUB pip, czy zakończy się pomyślnie? Jaka jest pełna wydajność? Z której instalacji Pythona korzystasz? Może być konieczne użycie sudo przed poleceniem instalacji, jeśli instalujesz Moduły w katalogu systemowym(jeśli używasz instalacji Pythona systemowego, być może). Nie ma zbyt wielu przydatnych informacji w twoim pytaniu, ale niektóre narzędzia, które prawdopodobnie pomogą, to: {]}

  • echo $PYTHONPATH i / lub echo $PATH: przy imporcie Moduły, Python przeszukuje jedną z tych zmiennych środowiskowych (listy katalogów, rozdzielane :) pod kątem żądanego modułu. Problemy z importowaniem są często spowodowane brakiem odpowiedniego katalogu na tych listach

  • which python, which pip, or which easy_install: te powiedzą ci lokalizację KAŻDEGO pliku wykonywalnego. To może pomóc wiedzieć.

  • Użyj virtualenv, Jak sugeruje @JesseBriggs. Działa bardzo dobrze z pip, aby pomóc Ci wyodrębnić i zarządzać modułami i środowiska dla oddzielnych projektów Pythona.

 -2
Author: Ryan Artecona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-12 17:26:56

Jeśli nauczysz się używać virtualenv (co jest dość martwe-proste), będziesz miał mniej tych problemów. Po prostu pobierzecie virtualenv i będziecie używać lokalnych (do projektu) pakietów.

To rozwiązuje dla mnie wiele bólu głowy ścieżkami, wersjami itp.

 -5
Author: Jesse Briggs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-12 17:18:56