pip paketleri başarıyla yükler, ancak çalıştırılabilir dosyalar komut satırından bulunamadı


122

Mac OS X Yosemite, sürüm 10.10.3 üzerinde çalışıyorum.

Yapıldığı gibi ben macport kullanarak python2.7 ve pip yüklü http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/

Paketleri başarıyla kurabilir ve onları python ortamımın ve python komut dosyalarımın içine aktarabilirim. Ancak, terminaldeki komut satırından çağrılabilen bir paketle ilişkili herhangi bir yürütülebilir dosya bulunmaz.

Neyin yanlış olabileceğini bilen var mı? (Daha fazla ayrıntı aşağıda)

Örneğin, http://wiki.ros.org/jade/Installation/Source adresinde anlatıldığı gibi "rosdep" adlı bir paket kurarken

Çalıştırabilirim: sudo pip install -U rosdep hangi hatasız kurulumlar ve ilgili dosyalar şurada bulunur/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Ancak çalıştırmayı denersem: sudo rosdep inithata veriyor:"sudo: rosdep: command not found"

Bu, pakete özgü bir hata değildir. Bunu bilgisayarıma pip kullanarak yüklenen herhangi bir paket için alıyorum. Eklemeyi bile denedim

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

benim için $PATH. Ancak, paketler python içinden mükemmel bir şekilde çalışsa da çalıştırılabilir dosyalar komut satırında bulunmaz.


herhangi bir virtualenv dahil mi?
JL Peyret

hayır, hiçbir virtualenv dahil değildir.
Sanket_Diwale

sudo yaptığınızda, kök kullanıcının $
Anthony Perot

Yanıtlar:


53

$ PATH'ınızı kontrol edin

tox bir komut satırı moduna sahiptir:

audrey:tests jluc$ pip list | grep tox
tox (2.3.1)

nerede?

(düzenleme: burada 2.7şeyler çok da önemli değil, herhangi bir şekilde alt 3.xve pip hemen hemen aynı şekilde davranıyor)

audrey:tests jluc$ which tox
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox

ve $ PATH'ımda ne var?

audrey:tests jluc$ echo $PATH
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin...

Uyarı /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin ? Pip yüklü eşyalarımı bulmamı sağlayan şey bu

Şimdi, Python'dan gelen şeylerin nerede olduğunu görmek için, bunu yapmayı deneyin (yerine rosdepkoyun tox).

$python
>>> import tox
>>> tox.__file__

yazdırılan:

'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc'

Şimdi, yukarıdaki dizine cd yapın lib. Bir bin dizini görüyor musunuz ? rosdepO çöp kutusunda görüyor musun ? Öyleyse bin, $ PATH yolunuza eklemeyi deneyin .

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7
audrey:2.7 jluc$ ls -1

çıktı:

Headers
Python
Resources
bin
include
lib
man
share

Cevap için teşekkürler JL, ama bu esas olarak benim sorunum. Örnek uygulamam rosdep için, sizin yaptığınız gibi yaptığım zaman, işte elde edilen çıktı: pip listesi | grep rosdep rosdep (0.11.4) hangi rosdep (çıktı yok), komut satırı hiçbir şey
döndürmüyor

1
hangi dönen değil rosdepSorununuz ile tutarlıdır. Demek istediğim rosdep, nerede kurulu olduğunu ve $ PATH'ın neye benzediğini bulmanız gerektiğidir .
JL Peyret

Teşekkürler, ikili dosyalarım da /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin içine kuruluyor. Bunu PATH'a ekledi ve şimdi çalışıyor. Teşekkürler, ikilileri bulmakta güçlük çekiyordum çünkü bu herhangi bir çıktı sağlamıyordu.
Sanket_Diwale

export PATH = / opt / local / Library / Frameworks / Python.framework / Versions / 2.7 / bin: $ PATH yollarımda eksikti ve OSX'te benim için hile yaptı
Caio Iglesias

1
Programı ile bulamazsanız which(henüz yolunuzda değilse), mlocatelinux veya mdfindmacOS'ta ikiliyi bulmayı da deneyebilirsiniz .
jackcogdill

57

Varsayılan python kurulumuna sahip macOS'ta /Users/<you>/Library/Python/2.7/bin/$ PATH'ınıza eklemeniz gerekir .

Bunu .bash_profile dosyanıza ekleyin:

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH"

Burada pip çalıştırılabilir dosyaları yükler.

İpucu: Varsayılan olmayan bir python sürümü which pythoniçin, python kurulumunuzun konumunu bulmak ve bu bölümü yukarıdaki yolda değiştirin. (Sanket_Diwale ipucu için teşekkürler)


8
Pip'in kurulduğu yer python'u nasıl kurduğunuza bağlıdır, MacOS'un macports, homebrew ve sistem varsayılanı gibi python kurmanın birden çok yolu vardır. Hangi python sürümünün kullanıldığına bağlı olarak, pip için farklı konumlarınız olacaktır. Pip ve python'un nerede bulunduğunu anlamanın kolay bir yolu, terminalde "hangi python" u kullanmak ve ardından uygun konumu $ PATH'a eklemek olacaktır.
Sanket_Diwale

1
MacOS 10.14.3 için Python 3.6'yı python.org'dan yüklemek which python3beni sonunda (bir bağlantı aracılığıyla) /Library/Frameworks/Python.framework/Versions/3.6/bin/.
anka kuşu

43

--user(Örn. pip3.6 install --user tmuxp) Kullanarak kuruyorsanız , sitemodülü kullanarak Python'un kendisinden platforma özel kullanıcı kurulum dizinini almak mümkündür . Örneğin, macOS'ta:

$ python2.7 -m site --user-base
/Users/alexp/Library/Python/2.7

Buna ekleyerek /bin, şimdi paket yürütülebilir dosyalarının yükleneceği yola sahibiz. PATH'i, çıktıya dayalı olarak kabuğunuzun rc dosyasında dinamik olarak doldurabiliriz; Bash kullanıyorum, ancak şansınız yaver giderse bu taşınabilir:

# Add Python bin directories to path
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin"
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin"

Python 3.5'ten 3.6'ya küçük bir sürümü yükselttiğinde yürütülebilir dosyaların sadece "kaybolma" olasılığını azaltmak için kesin Python sürümlerini kullanıyorum. Yok olurlar çünkü yukarıda da görülebileceği gibi, kullanıcı kurulum yolu Python sürümünü içerebilir. Yani python33.5 veya 3.6'yı gösterebilirken, python3.6her zaman 3.6'yı gösterecektir. Başka paketler yüklerken, örneğin pip3.6üzerinde kullanma gibi bu konu akılda tutulmalıdır pip3.

Paketlerin kaybolması fikrine aldırış etmiyorsanız, bunun yerine python2ve kullanabilirsiniz python3:

# Add Python bin directories to path
# Note: When Python is upgraded, packages may need to be re-installed
#       or Python versions managed.
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin"
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin"

29

Sorunun macOS hakkında sorduğunu biliyorum, ancak burada Google aracılığıyla buraya gelen Linux kullanıcıları için bir çözüm var.

Bu soruda açıklanan sorunu, pdfx paketini pip aracılığıyla yükledim .

Ancak onu çalıştırdığımda hiçbir şey ...

pip list | grep pdfx
pdfx (1.3.0)

Hala:

which pdfx
pdfx not found

Linux'taki sorun, pip install ...betikleri içine düşürmesidir ~/.local/binve bu, varsayılan Debian / Ubuntu'da değildir $PATH.

İşte daha ayrıntılı bir GitHub sorunu: https://github.com/pypa/pip/issues/3813

Düzeltmek ~/.local/biniçin $PATH, örneğin .bashrcdosyanıza aşağıdaki satırı ekleyerek ekleyin :

export PATH="$HOME/.local/bin:$PATH"

Bundan sonra, kabuğunuzu yeniden başlatın ve işler beklendiği gibi çalışmalıdır.


2
Kabuğunuzu yeniden başlatmak yerine source ~/.bashrc, .bashrcyapılandırmayı yeniden yükleyebilirsiniz
Whiteclaws

1
Harika. "Tox command not found" alıyordum.
PATH'i

10

Çözüm

İçin, diğer cevaplar dayanarak linuxve macaşağıdakileri çalıştırabilirsiniz:

echo "export PATH=\"`python3 -m site --user-base`/bin:$PATH\"" >> ~/.bashrc
source ~/.bashrc

yerine python3: Eğer piton sürümüne başka bağlantıyı kullanabilir python, python2.7, python3.6, python3.9, vb

Açıklama

Mevcut işletim sisteminde (win, mac, linux) kullanıcı paketlerinin nereye yüklendiğini bilmek için şunları çalıştırıyoruz:

python3 -m site --user-base

Komut dosyalarının bin/paketlerin kurulu olduğu klasöre gittiğini biliyoruz .

Bu yüzden yolları birleştiriyoruz:

echo `python3 -m site --user-base`/bin

Sonra bunu bir ortam değişkenine aktarıyoruz.

export PATH=\"`python3 -m site --user-base`/bin:$PATH\"

Son olarak, dışa aktar komutunu tekrarlamaktan kaçınmak için onu .bashrcdosyamıza ekliyoruz sourceve yeni değişiklikleri çalıştırmak için çalıştırıyoruz ve bize başlangıçta belirtilen önerilen çözümü veriyor.


@Benjamints bir açıklama ekledi, umarım yardımcı olur, iyi şanslar!
Willemoes

Son komutta çok şey var. Düzenlemeye çalıştım, ancak kaydetmek için en az 6 karakteri değiştirmem gerekiyor.
BenRoe

Bitti, kaldırdım, teşekkürler
Willemoes

4

Bu soruya tökezledim çünkü bir PyPI Paketi oluşturdum, başarıyla oluşturdum ve yayınladım, ancak kurulumdan sonra çalıştıramadım. $PATHDeğişkeni doğru ayarlandı.

Benim durumumda sorun belirlerim olmasaydı olmasıydı entry_pointiçinde setup.pydosyanın:

entry_points = {'console_scripts':

['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],},

3

Windows'ta, yolunuza giden yolu eklemeniz gerekir %USERPROFILE%\AppData\Roaming\Python\Scripts.


2

Değişkene python bindizinini eklemeye ek olarak $PATH, çalışması için o dizinin sahibini de değiştirmem gerekiyordu. Zaten neden sahibi olmadığım hakkında hiçbir fikrim yok.

chown -R ~/Library/Python/

1

Python veya Python3'ü MacOS yükleyiciyi (Python web sitesinden indirilir) kullanarak yüklediğinizde export, ~/.profilekomut dosyanıza bir er ekler . Tek yapman gereken sadecesource bu. Tüm terminalleri yeniden başlatmak da hile yapmalıdır.

UYARI - Gelecekteki faydalar için pip3'ü Python3 ile birlikte kullanmanın daha iyi olduğuna inanıyorum.

Zaten Python3 yüklediyseniz, macOS Mojave'de aşağıdaki adımlar benim için işe yarar:

  1. İlk kullanarak ansible'ı kurun sudo-sudo -H pip3 install ansible

  2. Python'un binyoluna bir sembolik bağ oluşturuyorsun

sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/current_python_bin

ve zımbalamak .profile

export PATH=$PATH:/Library/Frameworks/Python.framework/current_python_bin

  1. source ~/.profiletüm terminal kabuklarını çalıştırın ve yeniden başlatın.

  2. Tür ansible --version


Bir cmdline python paketi kurmak için pip3 kullandıktan sonra açılış ifadeniz için +1 (sadece .profile'ı yeniden çalıştırın veya oturumu kapatıp tekrar girin).
automorphic
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.