virtualenv yerine global site paketlerine pip kurulumu


102

pip3Bir paketi bir paket kurmak için kullanmak virtualenv, paketin virtualenv klasöründeki yerine genel site paketleri klasörüne yüklenmesine neden olur. OS X Mavericks'te (10.9.1) Python3 ve virtualenv'i şu şekilde kuruyorum:

Python3'ü Homebrew kullanarak kurdum:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl

İçindeki $PATHdeğişkeni değiştirdi .bash_profile; aşağıdaki satırı ekledi:

export PATH=/usr/local/bin:$PATH

Koşu which python3döner /usr/local/bin/python3(kabuk yeniden başlatmadan sonra).

Not: which python3hala / usr/bin/pythonyine de döndürür .

Yüklü virtualenvkullanarak pip3:

pip3 install virtualenv

Ardından, yeni bir tane oluşturun virtualenvve etkinleştirin:

virtualenv testpy3 -p python3
cd testpy3
source bin/activate

Not: -p python3 belirtmezsem, virtualenv'deki bin klasöründe pip eksik olacaktır.

Çalıştırma which pipve which pip3her ikisi de virtualenv klasörünü döndürür:

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

Şimdi, örneğin Markdown'u aktif virtualenv'de pip kullanarak kurmaya çalıştığımda pip, virtualenv'in site paketleri klasörü yerine global site paketleri klasörüne yüklenecek.

pip install markdown

Çalışan pip listiadeler:

Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)

İçeriği /Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages:

__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/

İçeriği /usr/local/lib/python3.3/site-packages:

Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/

Gördüğünüz gibi, global site paketleri klasörü Markdown'u içeriyor, virtualenv klasörü içermiyor.

Not: Python2 ve Python3'ü daha önce farklı bir VM'de kurdum ( bu talimatları izledim) ve Python3 ile aynı sorunu yaşadım; Python2 tabanlı bir sanal ortama paketler kurmak kusursuz bir şekilde çalıştı.

Herhangi bir ipucu, ipucu,… çok takdir edilecektir.


pip zaten mevcutsa bir paket kurmaz. Çıktısında "Gereksinim zaten karşılandı" ifadesini görmelisiniz. Henüz sahip olmadığınız bir paketi kurmaya çalışın. btw, pip3 demlenmemiş python3 kullanabilir (nasıl kurarsınız pip3?). Kendi başına kötü olmayabilir ama kötü olup olmadığının farkında olmalısınız.
jfs

1
Markdown'u daha önce kurmamıştım. Global paket listesi boştu. Hangi paketi denediğim önemli değil, bu davranışı her seferinde yeniden üretebiliyorum.
ƘɌỈSƬƠƑ

Pip3 ile ilgili olarak: bu, Python3 ile birlikte homebrew tarafından kuruldu.
ƘɌỈSƬƠƑ

Benim için bu aynı zamanda yardımcı oldu: stackoverflow.com/questions/14695278/… Sadece Bilginize Başkalarına
Nagaraj Tantri

Yanıtlar:


96

Bu konuyu açman ne tuhaf, bende de aynı sorun vardı. Sonunda çözdüm ama neyin sebep olduğu konusunda hala emin değilim.

bin/pipVe bin/activatekomut dosyalarınızı kontrol etmeyi deneyin . İçinde bin/pip, meseleye bakın. Doğru mu? Değilse düzeltin. Sonra hat ~ üzerinde 42Gözlerinde farklı bin/activate, sizin Virtualenv yolu doğru olup olmadığını kontrol edin. Böyle bir şeye benzeyecek

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

Eğer yanlışsa, düzeltin o deactivatezaman . bin/activateve eğer ortak sorunumuz aynı sebepten kaynaklanıyorsa, işe yaramalı. Hâlâ yoksa, yine de doğru yoldasınız. Senin yaptığın problem çözme rutinini which pipdefalarca, yığın izini takip ederek vb. Uyguladım.

Kesinlikle emin olun

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

istediğiniz şeydir ve benzer şekilde adlandırılmış başka bir test projesine atıfta bulunmamak (Bu sorunu yaşadım ve nasıl başladığı hakkında hiçbir fikrim yok. Şüphem aynı anda birden fazla virtualenv çalıştırıyor).

Bunların hiçbiri işe yaramazsa, Joe Holloway'ın dediği gibi geçici bir çözüm olabilir,

Sadece virtualenv'in pip'ini tam yolu ile çalıştırın (yani çalıştırılabilir yolu aramaya güvenmeyin) ve ortamı etkinleştirmeniz bile gerekmez. Doğru olanı yapacak.

Belki ideal değil, ama bir anda işe yaramalı.

Orijinal soruma bağlantı:

VirtualEnv / Pip, paketleri global olarak yüklemeye çalışıyor


1
Teşekkürler Chase. Sorunuza benimkini göndermeden önce geldim, ama görünüşe göre shebang'dan bahseden son satırı atladım. Ve aslında, #!/usr/local/bin/python3.3yerine ayarlandı #!/Users/kristof/VirtualEnvs/testpy3/bin/python3.3. Değiştirdim, virtualenv'i etkinleştirdim ve Markdown paketini kurdum. Pip artık global olan yerine virtualenv site paketleri klasörüne yükler.
ƘɌỈSƬƠƑ

Buna ben de rastladım, cevabın için çok teşekkürler. Shebang'ları fark ettim ve hemen ardından bu soruyu buldum, şüphelerimi doğruladı. Shebang'ın neden yanlış olduğunu bilen var mı? Kalıcı bir düzeltme bulmak güzel olurdu, bu yüzden yeni bir sanal ortam oluşturduğumuz her seferinde onu kontrol etmemize gerek kalmaz.
Will

2
Ben de aynı sorunu yaşadım. Benim activatekomut dosyası iyiydi, ama dikkat , tümpip* komut dosyaları ve easy_install*komut dosyaları yanlış shebang var. Hepsinin manuel olarak düzeltilmesi gerekir. Bunları pip veya benzeri bir şeyi yeniden yükleyerek düzeltemedim. Ayrıca, Joe Holloway'ın geçici çözümüne bir açıklama: sorun pip'i arayan kabukta değil, pip'in açıkça yanlış python'u belirtmesidir . Bu nedenle, $ ~/.virtualenvs/venv/bin/python ~/.virtualenvs/venv/bin/pip --version
python'u

Bu sorunla bir --relocatableortamdan sonra karşılaştım ve 42. satır yanlış, --relocatableİşi doğru yapmamış gibi görünüyor .
shellbye

4
Bu, bir ara dizini yeniden adlandırdığımda başıma geldi, bu yüzden '/ bin' içindeki
activ

16

Benim için bu bir pip veya virtualenv sorunu değildi. Bu bir piton problemiydi. $ PYTHONPATH'ımı bazı çevrimiçi eğitimleri izledikten sonra ~ / .bash_profile (veya ~ / .bashrc) içinde manuel olarak ayarladım. Bu manuel olarak ayarlanan $ PYTHONPATH, muhtemelen izin verilmesi gerektiği için virtualenv'de mevcuttu.

Ek add2virtualenvolarak, virtualenv içinde bir nedenle $ PYTHONPATH'ıma proje yolumu eklemiyordum.

Hala sıkışmış olabilecekler için sadece birkaç çatallanma yolu! Şerefe!


11

Aynı sorunu yaşadım, venv dizinini kaldırıp yeniden oluşturarak çözdüm!

deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt

Şimdi her şey bir cazibe gibi çalışıyor.


Ben kullanıyordum pip3Virtualenv varsayılan olarak kullanılan python2 böylece kullanırken pipyerine pip3. binHayır bulmak için kontrol ettim pip3. Kullanmak virtualenv -p python3 venvsorunu çözdü.
subtleseeker

Bu benim sorunumu çözdü. Pycharm'ın otomatik virtualenv oluşturma işlemi düzgün çalışmıyordu. Manuel kurulum hile yaptı. Teşekkürler.
Loaderon

5

Ben de bu problemi yaşadım. Arayan pip install <package_name>gelen /binPython 2.7 küresel sitesi paketleri dizinde yüklü olması Python paketin benim Mavericks Mac benim Python 3.3 sanal ortamda içinde dizinden neden olmuştur. Bu, $ PATH'ımın içeren dizinle başlamasına rağmen oldu pip. Tuhaf. Bu CentOS'ta olmaz. Benim için çözüm aramak pip3yerine aramaktı pip. Ben yüklü erdiğinde pip aracılığıyla sanal ortamında ez_setup , üç "pip" yürütülebilir yüklü olmuştu /bindizine - pip, pip3ve pip3.3. Merakla, üç dosya da tamamen aynıydı. Aranıyorpip3 install <package_name>Python paketinin yerel site paketleri dizinine doğru şekilde kurulmasına neden oldu. pipSanal ortama tam yol adı ile çağrı yapmak da doğru bir şekilde çalıştı. Mac'imin neden beklediğim gibi $ PATH kullanmadığını bilmek isterim.


5

Kontrol edilmesi gereken ilk şey, pip'in hangi konuma çözümlediğidir:

which pip

Bir sanal ortamdaysanız, bunun size aşağıdaki gibi bir şey vermesini beklersiniz:

/path/to/virtualenv/.name_of_virtualenv/bin/pip

Ancak, bazı nedenlerden dolayı sistem borunuza çözülüyor olabilir. Örneğin, bunu virtualenv'inizde görebilirsiniz (bu kötüdür):

/ usr / local / bin / pip (veya virtualenv yolunuzda olmayan herhangi bir şey).

Bunu çözmek için pipconfig'inizi kontrol edin:

~/.pipconf
~/.conf/pip
/etc/pip.conf

ve Python yolunuzu veya pip yolunuzu zorlayan hiçbir şeyin olmadığından emin olun (bu benim için düzeltildi)

Ardından yeni bir terminal başlatmayı deneyin ve virtualenv'inizi yeniden oluşturun (silin ve sonra yeniden oluşturun)


2
Ayrıca kontrol edin /etc/pip.conf! Benzer bir sorun yaşadım ve birçok hata ayıklamadan sonra, birinin üzerinde çalıştığım sistemi bu dosya ile uğraşarak yanlış yapılandırdığını fark ettim.
t.animal

Arch Linux kullanıyorum. /Etc/pip.conf'un işletim sistemi tarafından kurulduğunu düşünüyorum.
Q. Qiao

Teşekkürler! Günümü kurtardın! Bu yapılandırmalar dosya sisteminde gizlenmiş hayaletler gibiydi
MewX

2
Bazı nedenlerden dolayı pip'i geçersiz kılan bir terminal oturumu tanımlı takma adım vardı, which piphala bana doğru yolu veriyordu!
Matteo

4

Virtualenv içinden bir python paketi kurarken de aynı soruna rastladım. Benim durumumdaki temel neden farklıydı. Virtualenv içinden, (Ubuntu'da alışkanlık dışıydım), yapıyordum:

sudo easy_install -Z <package>

Bu, bin / pip shebang'in göz ardı edilmesine neden oldu ve bunu global site paketlerine kurmak için kökün virtualenv olmayan python'unu kullandı. Sanal bir ortama sahip olduğumuz için paketi "sudo" olmadan yüklemeliyiz


4

Manjaro'yu çalıştırırken de aynı soruna rastladım. Kullanarak sanal ortamı oluşturdum python3 -m ven venvve sonra ile etkinleştirdim source venv/bin/actiave. which pythonve which pipher ikisi de virtualenv'deki doğru ikililere işaret ediyordu, ancak ikili dosyaların tam yolunu kullanırken bile virtualenv'e yükleyemedim. Python-pip paketini sudo pacman -R python-pip python-reportlab(bağımlılıkları gidermek için reportlab dahil etmek zorunda kaldı) ile kaldırdığımda her şeyin beklendiği gibi çalışmaya başladığı ortaya çıktı. Neden olduğundan emin değilim, ancak bunun nedeni muhtemelen sistem paketinin öncelik kazandığı çift kurulumdur.


Bu sorunu Manjaro'da da yaşadım ve aynı şekilde çözdüm. python-pipÇözdükten sonra pamac aracılığıyla yeniden yükledim ve virtualenv pip düzgün çalışmaya devam etti. Tam olarak ne olup bittiğinden emin değilim, ancak bir çift yükleme sorunuyla ilgili değerlendirmenize katılıyorum.
sid

4

Aynı sorunu python 2 ve 3 yüklü maco'larda yaşadım.

Ayrıca .bash_profile,.

alias python=/usr/local/bin/python3
alias pip=/usr/local/bin/pip3

Takma adları kaldırmak ve sanal ortamı python3 -m venv venvyeniden oluşturmak sorunu çözdü.


macos python kurulumu gereksiz yere ağrılı
imho

Saçımı çekiyordum ve nihayet benim için sorunları çözen şey buydu: "Hangi pip" sorunu ortaya çıkardı, "unalias pip" düzeltti.
Colin

3

Güncellemesinden sonra benzer bir sorun yaşadım pip==8.0.0. Kötü yolu bulmak için pip hata ayıklamasına başvurmak zorunda kaldım.

Görünüşe göre profil dizinimde bazı boş yol değerleri olan bir distutils yapılandırma dosyası vardı. Bu, tüm paketlerin uygun sanal ortam yerine (benim durumumda /lib/site-packages) aynı kök dizine yüklenmesine neden oluyordu .

Yapılandırma dosyasının oraya nasıl ulaştığından veya boş değerlere nasıl sahip olduğundan emin değilim, ancak pip'i güncelledikten sonra başladı.

Bu aynı soruna başka birinin rastlaması durumunda, dosyayı silmek ~/.pydistutils.cfg(veya boş yapılandırma yolunu kaldırmak) ortamımdaki sorunu çözdü çünkü pip varsayılan dağıtılmış yapılandırmaya geri döndü.


1
Bu benim de sorunum. Dosyam böyle görünüyordu, oraya nasıl hiçbir fikri:[install]\nprefix=
foslock

1
@foslock evet, benimki de böyle görünüyordu. kötü haber haha!
Josiah Ruddell

3

Sanal ortamınızda bin dizinine gidin ve şöyle yazın:

./pip3 install <package-name>

1

Bugün aynı sorunla karşılaştık. sudo easy_install pip(OSX / Max) ile basitçe pip'i global olarak yeniden yükledim , ardından virtualenv'imi yeniden oluşturdum sudo virtualenv nameOfVEnv. Ardından yeni virtualenv'i etkinleştirdikten sonra pipkomut beklendiği gibi çalıştı.

sudoİlk virtualenv oluşumunda kullandığımı sanmıyorum ve bu pipvirtualenv içinden erişimin olmamasının nedeni olabilir, pip2bu düzeltmeden önce tuhaf olsa da erişebildim .


Bunu aldım çünkü dizini başka bir yola taşıdım ve virtualenvtekrar çalıştırılması gerekiyordu
citynorman

1

Sanal Ortamları kullanırken baş ağrısını önleyebilecek bazı uygulamalar şunlardır :

  • Projeleriniz için bir klasör oluşturun.
  • Senin oluşturun VIRTUALENV Bu klasörün içindeki projeler.
  • Projenizin ortamını etkinleştirdikten sonra asla kullanmayın " sudo pip install package " kullanmayın.
  • İşinizi bitirdikten sonra, daima ortamınızı " devre dışı bırakın".
  • Proje klasörünüzü yeniden adlandırmaktan kaçının.


Bu uygulamaların daha iyi bir temsili için, işte bir simülasyon:


projeleriniz / ortamlarınız için bir klasör oluşturmak

$ mkdir venv

ortam yaratmak

$ cd venv/ 

$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.

aktive edici ortam

$ source google_drive/bin/activate

paketleri kurmak

(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...    
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...

ortam içinde mevcut paket

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>  
>>> gdrive = pydrive.auth.GoogleAuth()
>>>

ortamı devre dışı bırak

(google_drive) $ deactivate 

$ 

paket ortam dışında KULLANILAMAZ

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>> 

Notlar:

Neden sudo değil?

Virtualenv, $ PATH ve diğer bazı değişkenler ve ayarları tanımlayarak sizin için yepyeni bir ortam oluşturur. Eğer kullandığınız zaman sudo pip paketini yüklemek , siz VIRTUALENV çalıştıran köküne oluşturulduğu bütün çevreyi kaçan, ve sonra, küresel site paketlerde paketi yükleme, proje klasörünün içindeki değil , bir Sanal Ortamı taşıyormuş rağmen çevreyi etkinleştirdi.

Projenizin klasörünü yeniden adlandırırsanız (kabul edilen cevapta belirtildiği gibi) ...

... içindeki bazı dosyalardan bazı değişkenleri ayarlamanız gerekecek projenizin bin dizinindeki .

Örneğin:

bin / pip, satır 1 (She Bang)

bin / enable, satır 42 (VIRTUAL_ENV)


1

Bu sorunu yaşadım. Klasör isimlerimden birinde soruna neden olan bir boşluk olduğu ortaya çıktı. Alanı kaldırdım, sildim ve venv kullanarak eski haline getirdim ve her şey yolunda gitti.


1

Bu sorun, bir virtualenv örneği oluşturup ardından ana klasör adını değiştirdiğinizde oluşur.


1

Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı.

Venv'im aktifti. pip -Vve which pipbana doğru virtualenv yolunu verdi, ancak pip installaktif venv içeren paketleri edindiğimde pip freezeboş kaldım.

Tüm ortam değişkenleri de doğruydu.

Son olarak, pip'i değiştirdim ve virtualenv'i kaldırdım:

easy_install pip==7.0.2

pip install pip==10

sudo pip uninstall virtualenv

Venv'i yeniden yükleyin:

sudo pip install virtualenv

Venv oluştur:

python -m virtualenv venv_name_here

Ve tüm paketler venvime tekrar doğru bir şekilde yüklendi.


1

Sanal ortam oluşturduktan sonra, VirtualEnvName \ Scripts içinde bulunan pip'i kullanmayı deneyin.

Sanal ortamınızda Lib \ site paketleri içinde bir paket kurmalıdır.


0

Ben de bu problemi yaşadım. Çağrı sudo pip install, Python paketlerinin küresel site paketlerine yüklenmesine neden oldu ve çağrı pip installiyi çalıştı. Yani virtualenv'de sudo kullanmayın .


Veya sudo kullanıyorsanız, sanal ortamı da etkinleştirmeniz gerekir. sudo suve <venv>/bin/activateardından pip install.
Dave

0

Aynı problem. Linux'tan yüklenen Python3.5 ve pip 8.0.2rpm .

Temel bir neden bulamadım ve doğru bir cevap veremiyorum. Görünüşe göre birden fazla olası neden var.

Ancak, umarım gözlemimi ve bir geçici çözümü paylaşmaya yardımcı olabilirim.

  1. pyvenv ile --system-site-packages

    • ./biniçermez pip, pipsistem site paketlerinde mevcuttur
    • paketler küresel olarak yüklenir ( BUG? )
  2. pyvenv olmadan --system-site-packages

    • pipiçine yüklenir ./bin, ancak bu farklı bir sürümdür (kimden ensurepip)
    • paketler sanal ortamda kurulur ( OK )

İçin Bariz geçici çözüm pyvenvile --system-site-packages:

  • --system-site-packagesseçenek olmadan yarat
  • değiştirmek include-system-site-packages = falseiçin truede pyvenv.cfgdosya

0

Virtualenv'inize giden yolu bir şekilde değiştirmediğinizi de kontrol etmeye değer.

Bu durumda, ilk satırın bin/pip(ve çalıştırılabilir dosyaların geri kalanının) yanlış bir yolu olacaktır.

Bu dosyaları düzenleyebilir ve yolu düzeltebilir veya virtualenv'i kaldırıp yeniden yükleyebilirsiniz.


0

Python 3ers için

Güncellemeyi deneyin. Aynı sorunu yaşadım ve Chases'ın cevabını denedim, ancak başarılı olamadım. Bunu yeniden düzenlemenin en hızlı yolu, mümkünse Python Minor / Patch sürümünüzü güncellemektir. 3.5.1 çalıştırdığımı ve 3.5.2'ye güncellediğimi fark ettim. Pyvenv bir kez daha çalışıyor.


0

Bu, virtualenv'i yanlış konumda oluşturduğumda başıma geldi. Daha sonra, dizini önemli olmadan başka bir yere taşıyabileceğimi düşündüm. Önemliydi.

mkdir ~/projects
virtualenv myenv
cd myenv
git clone [my repository]

Oh kahretsin, projectsvirtualenv'i oluşturmadan ve rep'i klonlamadan önce cd'ye girmeyi unuttum . Oh pekala, yok etmek ve yeniden yaratmak için çok tembelim. Dir'i hiçbir sorun olmadan taşıyacağım.

cd ~
mv myenv projects
cd projects/myenv/myrepo
pip install -r requirements

Hayır, daha fazla izin istiyor, ne oluyor? Garip olduğunu düşünmüştüm ama SUDO UZAK! Daha sonra paketleri global bir konuma kurdu.

Öğrendiğim ders, virtualenv dizinini silmekti. Hareket etmeyin.


0

Divio'yu kurduktan sonra bu sorunu yaşadım: bir terminal başlatırken YOLUMU veya ortamımı bir şekilde değiştirdi.

Bu durumda çözüm, source ~/.bash_profilesizi orijinal pyenv / pyenv-virtualenv durumuna geri döndürmek için önceden ayarlanmış olması gereken şeyi yapmaktı.


0

Her nasılsa proje klasöründe = "" önekine sahip bir setup.cfg dosyası

proje klasörünün dışında virtualenv üzerinde pip kurulumunu çalıştırmak çalıştı, bu yüzden içeriden pip'e varsayılan olarak "/" olan boş bir önek kullanmasını söylüyordu

dosyayı kaldırmak onu düzeltti


0

Bu sorunu yaşadım ve yukarıdaki tüm çözümü denedikten sonra her şeyi kaldırdım ve yeniden başladım.

Kendi durumumda sudo, sanal ortamın bulunduğu klasörlerden birini oluştururken kullandım ve sudo, ayrıcalıkları root'a verdi

Çok kızmıştım! Ama işe yaradı!


0

Bazı nedenlerden dolayı ubuntu sistemime pip aracılığıyla paketleri yüklemek için 'sudo' kullanmam gerekiyor. Bu, paketlerin global site paketlerine yüklenmesine neden oluyor. Gelecekte bu sorunla karşılaşabilecek herkes için bunu buraya koymak.


0

Başlıktaki sorunu tam olarak yaşadım ve çözdüm. Pip, PATH'ımı temizledikten sonra venv site paketlerine yüklemeye başladı: en başta yerel ~ / bin dizinime giden bir yol vardı.

Öyleyse, benim tavsiyem: ortam değişkenlerinizi "çöp" veya standart olmayan şeyler için iyice kontrol edin. Ne yazık ki, virtualenv bunlara karşı hassas olabilir.

İyi şanslar!


0

Kısa cevap “— site paketleri yok” parametresiyle Command virtualenv'i çalıştırmaktır.

Açıklamalı uzun cevap: -

Yani burada burada koştuktan ve birçok iş parçacığı üzerinden geçtikten sonra sorunu kendime buldum. Yukarıdaki cevaplar fikri verdi ama yine de her şeyin üzerinden tekrar geçmek istiyorum.

  • Sorun şu ki, ortamı etkinleştiriyor olsanız bile, virtualenv'i oluşturma şeklimiz nedeniyle sistem ortamına atıfta bulunuyor.

  • virtualenv env -p python3 komutunu çalıştırdığımızda, virtualenv'yi kuracak, ancak non -global — site-packages.txt oluşturmayacaktır.

  • Bu nedenle, ortamı kaynak etkinleştirme komutuyla etkinleştirdiğinizde, burada çalışan ve bu dosyanın mevcut olup olmadığını kontrol eden site.py (adı farklı olabilir, sadece unuttum) adlı bu dosya sys.path'e env yolunuzu eklemeyecektir. ve system python kullanın.

  • bu sorunu düzeltmek için sadece sanalenv'i ekstra parametre ile çalıştırın — site paketleri yok bu dosyayı oluşturur ve ortamı etkinleştirdiğinizde, PATH değişkeninize özel ortam yolunuzu ekleyerek onu erişilebilir kılar.


0

Yukarıda çok iyi tartışma var, ancak virtualenv örnekleri kullanıldı. 'Conda' artık virtualenv'i yönetmek için önerilen araç olduğundan, conda env'de pip çalıştırma adımlarını aşağıdaki gibi özetledim.

Env adı olarak py36r kullanacağım ve / opt / conda / envs, env'lerin öneki):

$ source /opt/conda/etc/profile.d/conda.sh # skip if already done 
$ conda activate py36r
$ pip  install pkg_xyz
$ pip  list | grep pkg_xyz

Yürütülen pip'in içinde /opt/conda/envs/py36r/bin/pip(değil /opt/conda/bin/pip) olması gerektiğini unutmayın .

Alternatif olarak, aşağıdakileri conda etkinleştirmeden çalıştırabilirsiniz

$ /opt/conda/envs/py36r/bin/pip

Ayrıca, conda kullanarak kurarsanız, etkinleştirmeden de kurabilirsiniz:

$ conda install -n py36r pkg_abc ...

0

PENCERELER

Benim için çözüm kullanmak değildi mkvirtualenv, ama:

python -m venv path/to/your/virtualenv

workon düzgün çalışıyor.

while in virtualenv: pip -Vvirtualenv'in pip yolunu gösterir


0

Ben de bu sorunla karşılaştım, @Chase Ries yöntemine göre çözene kadar beni uzun süre rahatsız etti.

Sorunu çözmenin anahtarı :

bin/pipVe bin/activatekomut dosyalarınızı kontrol etmeyi deneyin . İçinde bin/pip, meseleye bakın. Doğru mu? Değilse düzeltin. Sonra hat ~ üzerinde 42Gözlerinde farklı bin/activate, sizin Virtualenv yolu doğru olup olmadığını kontrol edin. Böyle bir şeye benzeyecek

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

Eğer yanlışsa, düzeltin o deactivatezaman . bin/activateve eğer ortak sorunumuz aynı sebepten kaynaklanıyorsa, işe yaramalı.

Aşağıda bu süreci detaylı olarak Ubuntuçevrede anlatacağım , aynısı WindowsveMacOS .

Bu cümlenin anlamı olduğunu biz ilk satırı olmadığını kontrol etmeniz gerekir #!/path/pythonarasında bin/pipsanal ortamda dosyanın doğrudur.

Dosyamda orijinal olarak gösterildiği gibi:

#!/home/banni/dai/.venv/bin/python3

pipTerminalde çalıştır (mutlak yol) :

/home/banni/dai/.venv/bin/pip

Bir hata bulacak :

bash: ./pip: /home/banni/dai/.venv/bin/python3: bad interpreter: No such file or directory

Şimdi bunu neden bulamadığımı kafam karıştı python3, çünkü sanal ortamın bulunduğu python3klasörde var .venv/bin.

Klasörün mutlak yolunu kontrol ediyorum .venv/bin. pwdKomutu çalıştırdıktan sonra şunu görüntüler:

/home/banni/Research/dai/.venv/bin

.venvKlasör yolunun değiştiğini dikkatlice gözlemleyin . /bin/pipDosyanın ilk satırını şu şekilde değiştirin:

#!/home/banni/Research/dai/.venv/bin/python3

Aynı şekilde, kontrol edin ve değiştirin. bin/activate dosyayı .

Değiştim VIRTUAL_ENV="/home/banni/dai/.venv"içinVIRTUAL_ENV="/home/banni/Research/dai/.venv"

Bu noktada sanal ortamı etkinleştirdikten sonra pipkomut normal şekilde yürütülebilir.

Yani benim için bu sorunun nedeni sanal ortamın bulunduğu klasörün yolunun değişmiş olması. (klasörler daha önce organize edildiğinde kalan gizli bir problem).

Ancak, sanal ortamın bulunduğu klasörün konumundaki değişiklik nedeniyle birçok yol hatası olabilir, bu nedenle en kolay yol, sanal ortamın bulunduğu klasörü orijinal konuma geri yüklemektir.

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.