Kesinlikle kurulu bir modül alınamıyor


145

Kurduktan sonra makineleştirmek , bunu ithal edebilmek için görünmüyor.

Pip, easy_install ve python setup.py installbu repo üzerinden yüklemeyi denedim : https://github.com/abielr/mechanize . Tüm bunlar boşuna, her Python interaktif girdiğimde:

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

Daha önce çalıştırdığım kurulumlar başarıyla tamamlandıklarını bildirdi, bu yüzden ithalatın çalışmasını bekliyorum. Bu hataya ne sebep olabilir?


Bize koşu çıkışını gösterebilir misiniz easy_install? Ayrıca tam yolunu teyit ediniz easy_install, pipve bir python.
larsks

?) Eğer emin (ubuntu varsayılan olan (2.6'ya yüklenmedi en azından benim debian var Are
dav1d

kolay kurulum çıktısı 2.7'ye kurulduğunu gösterir: /usr/local/lib/python2.7/dist-packages/mechanize-0.2.6.dev_20130112-py2.7.egg
roy

@larks - orjinal gönderiye bu bilgiyi ekledi
roy

Ben sadece bu her şekilde denedim - setup.py, easy_install, pip - pypi ve repo, ama başarısız olsun. Eğer kontrol eder misiniz sys.pathsiz, doğru yerlerde arıyorsanız görmek için ls -laR /usr/local/lib/python2.7/dist-packages/mech*izinleri sorun olup olmadığını kontrol etmek ve bakmak imp.find_module("mechanize")arasındaki farkı duy--bulmak ve duy-hayatta-ithal-it hataları?
DSM

Yanıtlar:


100

Benim durumumda, izin sorunu. Paket bir şekilde sadece kök rw izni ile kuruldu, diğer kullanıcı sadece rw yapamıyor!


26
Bu bana, sadece koşarak oldu sudo pip install .... Basit düzeltme:sudo chmod -R ugo+rX /lib/python2.7/site-packages/
jozxyqk

3
Ben birçok kez karşılaştım ve ben sadece nedenini keşfetti düşünüyorum: umask sudo geçti, bu yüzden kişisel umask sıkı ve yükleme için sudo kullanıyorsanız, dosyalar ve dizinler aşırı kısıtlı olacak. Sadece önce su sonra kurulumunu tam bir kök kabuktan yaparsanız, ortaya çıkan kurulum kullanılabilir (en azından benim için). Bu pip içindi, ama apt-get için de geçerli olabilir. Diğerleri bu nedeni onaylarsa, cevabı buna göre değiştirmek isteyebilir mi?
Brandyn

Jozxyqk yorumlarına ekleme: $ pip show <package_name>
Federico

2
Benim için de aynı. Mac'te Python 3.6 ile çalışıyorum sudo chmod 777 /usr/local/lib/python3.6/site-packages, hile de yaptı
Antonio Serrano

3
sudo 777 her zaman çok kötü bir fikirdir
Marx

81

Ben de aynı sorun vardı: import coloramaatma ve ImportError ile komut , ama sudo pip install coloramabana "paket zaten yüklü" söylüyordu.

Benim düzeltme: pip çalıştırmak sudo olmadan : pip install colorama. Daha sonra pip, yüklenmesi, yüklenmesi ve betiğimin çalıştırılması gerektiğini kabul etti.

Ortamım Ubuntu 14.04 32 bit; Sanırım bunu sanal ağımı etkinleştirmeden önce ve sonra gördüm.

GÜNCELLEME : daha da iyisi, kullanın python -m pip install <package>. Bunun avantajı, paketi istediğiniz python'un belirli bir sürümünü yürüttüğünüz için, pip, paketi "sağ" python'a açık bir şekilde yükleyecektir. Yine, yok o zaman (istenmeyen) kök izinleriyle muhtemelen doğru yerde paketi almak, ama ... Bu durumda sudo kullanmak.


1
alternatif olarak
sudo'nun

21

Python yolu problemi.

Benim durumumda, yüklü python var:

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

ve python2.6 içinde site paketleri dizini yoktur.

Pip tarafından yüklediğim paket (SOAPpy)

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

Ve site paketi python yolunda değil, tek yaptığım PYTHONPATH'a kalıcı olarak site paketleri eklemek.

  1. Terminali Aç
  2. Open .bash_profile yazın
  3. Açılan metin dosyasına bu satırı sonuna ekleyin:

    dışa aktarma PYTHONPATH = $ PYTHONPATH: /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/

  4. Dosyayı kaydedin, Terminal'i yeniden başlatın ve işiniz bitti

Bu benim için Jenkins'in selenyum python ile çalışmasını sağladı.
edst

Bu benim için bash betiğim kereviz betiğimi çağırdığında süpervizör aracılığıyla kereviz çalıştırmamda işe yaradı; kereviz betiği pip'lerimin içine kurulu modülleri alamadı. Bir ton teşekkürler.
Shivam Sharma

Not: İçe aktarma hatasının başka bir olasılığı, bilgisayarınızda Python'un birden çok sürümünün yüklü olmasıdır. Örneğin, biri sistemin Python'undan, diğeri Miniconda veya Anaconda'dan. Bu nedenle, her zaman doğru karşılık gelen "pip" i kullandığınızdan emin olun.
Sanchit

8

Python içe aktarma mekanizması gerçekten de öyle çalışır:

  1. PYTHONPATH yanlis,
  2. Kütüphaneniz düşündüğünüz yere kurulu değil
  3. Bunu maskeleyen aynı ada sahip başka bir kütüphaneniz var

1
Bu durumda seçenek 3 olamaz; bir ImportError atmaz.
Martijn Pieters

2
belki 2? Diğerlerinin iyi olduğu bu kütüphane için neden yanlış yere kurulacağını bilmiyorum.
roy

3
Seçenek 4: PYTHONPATH haklı, kütüphaneniz istediğiniz yerde, bunu maskeleyen bir kütüphaneniz yok ... ama kullandığınız sudo pip installiçin root privs ile yüklendi ve ithalat zamanında bir şey olmaması nedeniyle bombalanıyor okuma veya yazma erişimi.
Dan H

2
Doğru değil, @MartijnPieters: "<package> import <foo>" biçiminden bir içe aktarma olsaydı ve engelleme paketinde "foo" yoksa, seçenek 3 için bir içe aktarma hatası alırsınız.
Dan H

@DanH, ama OP'nin kullandığı form bu değil.
Martijn Pieters

8

Genç kalçalı bir stajyer bana modül dizininin içindeki "python setup.py install" olduğunu söyleyene kadar başımı monitörümün karşısına koydum .

Bazı nedenlerden dolayı, kurulumu buradan çalıştırmak sadece çalışmasını sağlar.

Netleştirmek gerekirse, modülünüzün adı "foo" ise:

[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 dosyasını başka bir dizinden yolunu çağırarak çalıştırmayı denerseniz, sonuçta bir yükleme gerçekleştirirsiniz.

ÇALIŞMIYOR:

python /root/foo/setup.py install

ÇALIŞIR:

cd /root/foo
python setup.py install

7

Kombine bir yaklaşımla bu sorunu çözebildim. Önce Chris'in tavsiyelerini takip ettim, bir komut satırı açtım ve 'pip show packagegename' yazdım. Bu, kurulu paketin yerini verdi.

Sonra, python açtım ve 'sys.path' yazdım, sonra python'umun içe aktardığım paketleri nerede aradığını göstermek için 'sys.path' yazdım. Ne yazık ki, ilk adımda gösterilen konum listede DEĞİLDİR.

Son adım, 'sys.path.append (' package_location_seen_in_step_1 ') yazdım. İsterseniz konumun listede olduğunu görmek için ikinci adımı tekrarlayabilirsiniz.

Test adımı, paketi tekrar içe aktarmayı deneyin ... işe yarıyor.

Olumsuz tarafı? Geçicidir ve her seferinde listeye eklemeniz gerekir.


5

Yüklediğim anahtarlığı kullanmaya çalışırken bununla karşılaştım sudo pip install keyring. Diğer cevaplarda belirtildiği gibi, benim durumumda bir izin sorunu.

Benim için ne işe yaradı:

  1. Yüklü olmayan anahtarlık:
    • sudo pip uninstall keyring
  2. Sudo'nun -Hseçeneğini kullandım ve anahtarlığı yeniden taktım:
    • sudo -H pip install keyring

Bu yardımcı olur umarım.


3

Python'da yeniyim. Proje yorumlayıcı yolunu değiştirerek bu sorunu çözdüm.
File -> Settings -> Project -> Project Interpreter


Nereden, bir IDE veya ???
Christopher Kikoti

2

PYTHONPATH'ımın düzgün çalışmasını sağlayamadım. Ekleyerek exportsorunu düzelttim:

(Iş yaptı)

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

vs.

(işe yaramadı)

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

2

Benim durumumda koştum pip install Django==1.11ve pythontercümandan ithal etmeyeceğim .

Pip'in komutlarına göz atarak pip showhangi şeye benzediğini buldum :

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

Konum '3.4' diyor. Ben bulundu python-command bağlantılıydıpython2.7

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

Hemen yanında ben denilen bir bağlantı buldum python3. Bağlantıyı olarak da değiştirebilirsiniz python3.4. Bu da düzeltir.


1

Benim durumumda , Python 2.7 ortamında içe aktarmak istediğim, modüldeki eksik init .py dosyasıyla ilgili bir sorun vardı .

Python 3.3+ bir olmadan paketleri oluşturmasına izin Örtülü Ad alanı Paketleri sahiptir init .py dosyası.


1

Belirtilen diğer yanıtlar sizin için işe yaramazsa, pip önbelleğinizi silmeyi ve paketi yeniden yüklemeyi deneyin. Makinem Ubuntu14.04'ü çalıştırıyor ve altındaydı ~/.cache/pip. Bu klasörü silmek benim için hile yaptı.


1

Ayrıca, karıştırmamaya dikkat pip3edin pip. Bulduğum şey, yüklü olan paketin pipçalışmadığıydı python3.


0

easy_installVeya yoluyla yüklediğinizde pipbaşarıyla tamamlanıyor mu? Tam çıktı nedir? Hangi python kurulumunu kullanıyorsunuz? sudoModülleri bir sistem dizinine yüklüyorsanız (belki de sistem python yüklemesini kullanıyorsanız) kurulum komutunuzdan önce kullanmanız gerekebilir . Sorunuzda gidilecek çok fazla yararlı bilgi yok, ancak muhtemelen yardımcı olacak bazı araçlar şunları içerir:

  • echo $PYTHONPATHve / veya echo $PATH: modülleri içe aktarırken, Python bu ortam değişkenlerinden birini ( :sınırlandırılmış dizin listeleri ) istediğiniz modülü arar . İçe aktarma sorunları genellikle doğru dizinin bu listelerde bulunmamasından kaynaklanır

  • which python,, which pipveya which easy_install: bunlar size her yürütülebilir dosyanın konumunu söyleyecektir. Bilmek yardımcı olabilir.

  • @JesseBriggs'nin önerdiği gibi virtualenv kullanın . pipAyrı Python projeleri için modülleri ve ortamı izole etmenize ve yönetmenize yardımcı olmak için çok iyi çalışır .


0

Bu kesin problemim vardı, ama yukarıdaki cevapların hiçbiri işe yaramadı. Ana projeden içe aktardıktan sonra sys.path'in farklı olduğunu fark edene kadar beni deli etti. Proje hiyerarşisinde olmayan bir dosyayı içe aktarmak için importlib'i küçük bir işlev yazmak için kullandığım ortaya çıktı. Kötü fikir: Bunu yaptığımı unuttum. Daha da kötüsü, içe aktarma işlemi sys.path ile mucking yaptı ve bu şekilde bıraktı. Çok kötü bir fikir.

Çözüm bunu durdurmak ve projeye aktarmak için ihtiyacım olan dosyayı koymaktı. Başka bir yaklaşım, dosyayı zaman zaman yeniden oluşturulması gerektiğinden kendi projesine koymak olurdu ve yeniden oluşturma ana projenin yeniden inşasıyla çakışabilir veya olmayabilir.


0

Python-Telegram-Bot ile bir telgraf botunu test etmeye çalışan sistemime 2.7 ve 3.5 yüklü bu sorunu yaşadım .

Pip ve pip3 ile, sudo veya ons olmadan yükledikten sonra çalışamadım. Hep aldım:

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

Hata iletisini doğru bir şekilde okumak, python'un geçerli dizinde bir telegram.py. Ve orada telegram.py adında bir senaryom vardı ve aradığımda bu python tarafından yüklendiimport .

Sonuç olarak, package.pyiçe aktarmaya çalışırken geçerli çalışma dizininizde bulunmadığından emin olun . (Ve hata mesajını iyice okuyun).


0

Benzer bir sorunum vardı (Windows'ta) ve benim durumumdaki kök neden ANTIVIRUS yazılımı! Çalışmayı bir çeşit sanal makine ile saran "Otomatik Koruma" özelliğine sahiptir. Belirtiler şunlardır: pip install somemodulebir cmd-line penceresinde iyi çalışır import somemoduleve hatayla başka bir işlemden yürütüldüğünde başarısız olur

ModuleNotFoundError: No module named 'somemodule'

Umarım birine zaman kazandırır :)


0

Belki biraz konu dışı, ama sorunları vardı import PyYAML. Gerektiğine dikkat çekiyor import yaml. (sanırım klasik bir rtfm ...)


0

Django kullanırken benzer bir sorun yaşadım. Benim durumumda, modülü Django kabuğundan alabilirim, ancak modülü ithal eden bir .py'den alamazdım.
Sorun, Django sunucusunu (bu nedenle, .py yürütme) farklı bir virtualenv çalıştırıyordu oldu modülün yüklü olduğu .

Bunun yerine, kabuk örneği doğru virtualenv'de çalıştırılıyordu. Bu yüzden neden işe yaradı.


0

Bu çalışıyor!!!

Bu genellikle modül eski bir python sürümüne veya başka bir dizine yüklendiğinde olur, çözüm basit olduğundan endişelenmeyin. - modülü, modülün kurulu olduğu dizinden içe aktarın. Bunu önce python sysmodülünü içe aktarabilir, ardından modülün kurulu olduğu yoldan içe aktarabilirsiniz

import sys
sys.path.append("directory in which module is installed")

import <module_name>

0

Olası vakaların çoğu zaten çözümlerle kaplanmıştı, sadece davamı paylaştım, bana bir paketi bir ortama kurdum (ör. X) Ve paketi başka bir ortama (örneğin Y) aktarıyordum . Bu nedenle, paketi kurduğunuz ortamdan aldığınızdan emin olun.


0

Benim için işe yarayan bir şey:

python -m pip install -user {package name}

Komut sudo gerektirmez. Bu OSX Mojave üzerinde test edildi.


0

Benim durumumda süper kullanıcı için de modül (ler) kurmak zorunda kaldım.

sudo su
pip install <module>

Görünüşe göre, superuse belirli koşullar altında normal kullanıcıların dosyalarına erişemez.


0

Benim için modülün versiyonunu kullandığım Python sürümüyle aynı hizada sağlıyordu. Görüntüyü Python 3.6 ile bir kutu üzerine inşa ettim ve sonra 3.7 olan bir Docker görüntüsüne enjekte ettim. yüklü edip kafamı vurdum Python bana modülün kurulu olmadığını söylediğinde ...

36m Python 3.6 için bsonnumpy.cpython-36m-x86_64-linux-gnu.so

37m Python 3.7 için bsonnumpy.cpython-37m-x86_64-linux-gnu.so


pip installkullandığınız Python sürümüyle eşleşen sürüm. Ne hatayı alıyorsunuz ve çıktısı nedirpython --version
streetster

Python --version bana verir: Python 3.7.7 ve paket chek ile librosa yüklü nerede chek zaman librosa verir; Konum: /home/ec2-user/anaconda3/lib/python3.7/site-packages paketin doğru yerde olduğu anlamına gelir, ancak paketi içe aktardığımda: modül adı yok AWS Sagemaker env üzerinde çalışıyorum Pytorch_p36
Walid Bousseta

muhtemelen pytorch_p37 kullanmak mı istiyorsunuz?
streetster

pytorch_p37 yok
Walid Bousseta

0

Bu süper eski bir yazı olduğunu biliyorum ama benim için 32 bit python ve 64 bit python yüklü bir sorun vardı. 32 bit python'u kaldırdığımda, her şey olması gerektiği gibi çalıştı.


0

Aynı kütüphanelerin bir projede (A) iyi çalıştığı ancak aynı kütüphaneleri başka bir projede (B) içe aktarmanın hataya neden olduğu sorunumu çözdüm. Windows işletim sisteminde IDE olarak Pycharm kullanıyorum. Bu nedenle, birçok potansiyel çözümü denedikten ve sorunu çözemedikten sonra, bu iki şeyi yaptım ("Venv" klasörünü sildim ve yeniden yapılandırılmış yorumlayıcı):

1-B projesinde, Harici Kütüphaneler'de ("venv") adında bir klasör vardı. O klasörü sildim.

2-Adım 1 ("venv" klasörünü silmek) Python Tercüman Yapılandırmasında hataya neden olur ve ekranın üstünde "Proje için geçersiz python yorumlayıcısı seçildi" ve "python yorumlayıcısını yapılandır" yazan bir mesaj var, o bağlantıyı seçin ve yeni bir pencere açar. "Proje Tercümanı" açılır listesinde, daha önce geçersiz yorumlayıcıyı gösteren Kırmızı renkli bir çizgi vardır. Şimdi, bu listeyi açın ve Python Tercümanını seçin (benim durumumda Python 3.7). Alt kısımdaki "Uygula" ve "Tamam" a basın.

Not: Projemin Sanal Ortamının (B) zaten kurulu ve çalışan kütüphaneleri tanımaması muhtemel bir sorundu.


0

Sanal ortam kullanıyorsanız pipenv install <module name>,pip install <module name>

Benim için çalıştı.


pipenv bulunamadı
Walid Bousseta

0

Bu sorun da vardı .. paket Python 3.8.0 üzerine kuruldu, ancak VS Code eski bir sürümü kullanarak komutumu çalıştırıyordu (3.4)

terminalde sabitleyin:

py .py

Paketi doğru Python Sürümü'ne yüklediğinizden emin olun


0

Bir arkadaşımın bugün benim için yaptığı gibi, bana yardımcı olan şey (Windows'u kullanıyorum):

'Ayarlar' -> 'Proje' -> 'Proje Tercümanı'na basın. Sağdaki pencerede solda 'Proje Tercümanı' başlıklı bir çizgi var. Bu satırı tıklayın, birkaç ek satır daha açılacaktır.

Şimdi 'Tümünü Göster' satırına basın. Bir pencere açılacaktır. Bu pencerede sağ üst köşedeki küçük '+' işaretine basın.

Yeni bir pencere açılacaktır. Solda 4 sekme var, 'Virtualenv Ortamı' yazan en üst sekmeye basın. Şimdi, sağdaki pencerede 'Mevcut Ortam' seçeneğini işaretleyin. 'Tercüman' satırı iyi görünür hale gelecektir. Çizginin sağındaki '...' düğmesine basın.

Şimdi bir tarama penceresi açılacaktır. Python'un kendisini yüklediğiniz dizine göz atın . PyCharm'ı kullananla değil. Oraya vardığınızda, 'python.exe' dosyasını seçin ve Tamam'a basın (pencere kaybolacaktır).

Tekrar OK (Tamam) düğmesine basın (bu pencere de kaybolacaktır).

Şimdi bu pencerede, oluşturduğunuz yeni satırın işaretlendiğinden emin olun ve tekrar Tamam'a basın.

Şimdi, kurulu tüm paketler proje yorumlayıcısında görünür olmalı ve programınız tarafından okunmalıdır.


0

Bu iş parçacığında bahsedilen görmüyorum benim için çalışan en basit çözüm:

Yüklü Python birden fazla sürümü var ama Python3.7 kullanmaya çalışıyordu - bu yüzden kullanmak zorunda kaldı:

sudo pip3.7 install <package>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.