Pipenv: ไม่พบคำสั่ง


119

ฉันยังใหม่กับการพัฒนา Python และพยายามใช้ pipenv ฉันรันคำสั่งpip install pipenvซึ่งทำงานได้สำเร็จ:

...
Successfully built pipenv pathlib shutilwhich pythonz-bd virtualenv-clone
Installing collected packages: virtualenv, pathlib, shutilwhich, backports.shutil-get-terminal-size, pythonz-bd, virtualenv-clone, pew, first, six, click, pip-tools, certifi, chardet, idna, urllib3, requests, pipenv
...

อย่างไรก็ตามเมื่อฉันรันคำสั่งpipenv installในไดเร็กทอรีโปรเจ็กต์รูทใหม่ฉันได้รับข้อความต่อไปนี้: -bash: pipenv: command not found. ฉันสงสัยว่าฉันอาจต้องแก้ไข. bashrc ของฉัน แต่ฉันไม่ชัดเจนว่าจะเพิ่มอะไรลงในไฟล์หรือหากจำเป็นต้องปรับเปลี่ยน


1
ตรวจสอบ/usr/local/bin/pipenv- มีหรือไม่ อยู่/usr/local/binในของคุณ$PATH?
phd

3
ปัญหาเดียวกันที่นี่: สร้าง pipenv สำเร็จ แต่ไม่มีสัญญาณของโฟลเดอร์ pipenv ใน / usr / local / bin
aDone

คุณติดตั้งpipenvทั่วโลกหรือไม่?
dethos

คำตอบ:


128

เกิดขึ้นเนื่องจากคุณไม่ได้ติดตั้งทั่วโลก (ทั้งระบบ) เพื่อให้พร้อมใช้งานpathคุณต้องติดตั้งโดยใช้sudoดังนี้:

$ sudo pip install pipenv

88
สำหรับ copy-and-pasters คำสั่งนี้มักจะทำงานเป็นsudo -H pip install -U pipenv(เช่นบน ubuntu) โดยติดตั้งpipenvใน/usr/local/bin. อีกทางเลือกหนึ่งคือการติดตั้งของผู้ใช้เช่น$ pip install pipenvซึ่งเหมือนกับการ$ pip install --user pipenvติดตั้งสิ่งต่างๆ$HOME/.local/...ที่PATHต้องแก้ไขเช่นเดียวกับคำตอบอื่น ๆstackoverflow.com/a/47111756/127971
michael

3
สิ่งนี้ทำให้ฉันได้รับทุกครั้งที่มีสภาพแวดล้อมเดสก์ท็อปใหม่
Ligemer

@michael คุณมีคำตอบที่ดีที่สุดในความคิดเห็น ความอัปยศ! โพสต์ไว้เป็นคำตอบ
Rahul

@ ไมเคิลนี่เป็นสิ่งเดียวที่ได้ผลสำหรับฉันขอบคุณมาก!
jaycarleton

@michael ขอบคุณสำหรับคำตอบ ยืนยันว่าใช้งานได้
อัลตราซาวด์

130

สิ่งนี้แก้ไขให้ฉัน:

sudo -H pip install -U pipenv

3
ทำงานได้อย่างสมบูรณ์แบบ! โดยบังเอิญคุณรู้หรือไม่ว่าคำสั่งเหล่านี้หมายถึงอะไร (-H และ -U)?
Babbz77

12
@ Babbz77 อ็อพชัน -H (HOME) สำหรับ sudo ร้องขอให้นโยบายความปลอดภัยตั้งค่าตัวแปรสภาวะแวดล้อม HOME เป็นโฮมไดเร็กทอรีของผู้ใช้เป้าหมาย (root โดยค่าเริ่มต้น) ตามที่ระบุโดยฐานข้อมูลรหัสผ่าน -U สำหรับการติดตั้ง pip อัพเกรดแพ็คเกจที่ระบุทั้งหมดเป็นเวอร์ชันใหม่ล่าสุดที่มี การจัดการการอ้างอิงขึ้นอยู่กับการอัพเกรด - กลยุทธ์ที่ใช้
Andrey Vaganov

ขอบคุณมากฉันดิ้นรนมาก แต่คำตอบของคุณช่วยฉันได้
vdkotian

1
นี่น่าจะเป็นคำตอบ ทำงานได้อย่างสมบูรณ์แบบ ฉันค้นหาสักพัก ขอบคุณ
Ivan Gonzalez

62

หากคุณติดตั้งผู้ใช้เสร็จแล้วคุณจะต้องเพิ่มโฟลเดอร์ที่ถูกต้องให้กับPATHตัวแปรของคุณ

PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"

ดู คำแนะนำในการติดตั้งของ pipenv


สิ่งนี้มีประโยชน์เนื่องจากฉันต้องเรียกใช้pipenv runและคำแนะนำในการติดตั้งก็บอกฉันเช่นนั้น
eksortso

1
คุณต้องทดสอบpython3 -m siteเพื่อดูว่า - ฐานผู้ใช้มีอยู่จริงหรือไม่!
Claudio Santos

ควรได้รับคำตอบขอบคุณ!
Maxime Lafarie

21

ฉันลองสิ่งนี้:

python -m pipenv # for python2

python3 -m pipenv # for python3

หวังว่านี่จะช่วยคุณได้


1
ขอบคุณทำไมฉันต้องรวม python -m ทุกครั้งที่เรียกใช้ pipenv
ฟ้อง

14

ฉันมีปัญหาเดียวกันกับpipenvMac OS X 10.13 High Seirra Mac เครื่องอื่นใช้งานได้ดี ฉันใช้ Heroku เพื่อปรับใช้เซิร์ฟเวอร์ Django ของฉันบางตัวใน 2.7 และบางตัวใน 3.6 ดังนั้นฉันต้องการทั้ง 2.7 และ 3.6 เมื่อ HomeBrew ติดตั้ง Python มันจะเก็บpythonคะแนนไว้ที่ 2.7 ดั้งเดิมและpython3ชี้ไปที่ 3.6

ปัญหาอาจเกิดจาก$ pip install pipenv. ฉันตรวจสอบ / usr / local / bin และ pipenv ไม่อยู่ที่นั่น ดังนั้นฉันจึงลองถอนการติดตั้งแบบเต็ม:

$ pip uninstall pipenv

Cannot uninstall requirement pipenv, not installed
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

$ pip3 uninstall pipenv
Skipping pipenv as it is not installed.

จากนั้นติดตั้งใหม่และใช้งานได้ทันที:

$ pip3 install pipenv
Collecting pipenv

8

OSX GUYS มากกว่าที่นี่ !!!

ตามที่ @charlax ตอบ (สำหรับฉันคำที่ดีที่สุด) คุณสามารถใช้คำสั่งแบบไดนามิกมากขึ้นเพื่อตั้งค่า PATH, buuut สำหรับผู้ใช้ mac ซึ่งไม่สามารถใช้งานได้บางครั้งเส้นทาง USER_BASE ของคุณที่ได้รับจากไซต์ไม่ถูกต้องดังนั้นคุณต้องค้นหาว่า การติดตั้ง python คือ.

$ which python3
/usr/local/bin/python3.6

คุณจะได้รับ symlink จากนั้นคุณต้องหา symlink ของแหล่งที่มา

$ ls -la /usr/local/bin/python3.6
  lrwxr-xr-x  1 root  wheel  71 Mar 14 17:56 /usr/local/bin/python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

( ../../../หมายถึงรูท)

ดังนั้นคุณพบเส้นทาง python ( /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6) จากนั้นคุณต้องใส่คุณ ~ / .bashrc ดังนี้:

export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.6/bin"


1
แก้ไขปัญหาของฉัน Cheers
Floran Gmehlin

ฉันติดตั้ง python3 ผ่าน Homebrew เมื่อรันwhich python3เอาต์พุตคือ/Cellar/python/3.7.7/bin/python3สิ่งที่ฉันกำหนดให้กับ PATH ของฉัน แต่ยังไม่พบ `pipenv` ความคิดใด ๆ ?
Ozkan Serttas

6

ที่ Python เก็บแพ็คเกจ

ก่อนที่จะเข้าสู่คำสั่งที่จะติดตั้งpipenvควรทำความเข้าใจว่าpip ติดตั้งแพ็คเกจ Pythonไว้ที่ใด

Global site-packageคือที่ที่ Python ติดตั้งแพ็กเกจที่จะพร้อมใช้งานสำหรับผู้ใช้ทั้งหมดและแอพพลิเคชั่น Python ทั้งหมดบนระบบ คุณสามารถตรวจสอบแพ็คเกจไซต์ส่วนกลางด้วยคำสั่ง

python -m site

ตัวอย่างเช่นบน Linux ที่มี Python 3.7 เส้นทางมักจะเป็น

/usr/lib/python3.7/dist-packages/setuptools

ผู้ใช้ไซต์แพ็คเกจคือที่ที่ Python ติดตั้งแพ็คเกจที่มีให้สำหรับคุณเท่านั้น แต่แพ็กเกจจะยังคงมองเห็นได้สำหรับโครงการ Python ทั้งหมดที่คุณสร้าง คุณสามารถรับเส้นทางด้วย

python -m site --user-base

บน Linux ที่มี Python 3.7 เส้นทางมักจะเป็น

~/.local/lib/python3.7/site-packages

ใช้ Python 3.x

ใน Linux และ Unices ส่วนใหญ่มักจะติดตั้ง Python 2 และ Python 3 แบบเคียงข้างกัน เริ่มต้นหลาม 3 python3ที่ปฏิบัติการอยู่เกือบตลอดเวลา pipอาจมีให้เลือกอย่างใดอย่างหนึ่งต่อไปนี้ขึ้นอยู่กับการแจกจ่าย Linux ของคุณ

pip3
python3-pip
python36-pip
python3.6-pip

ลินุกซ์

หลีกเลี่ยงการใช้pipด้วยsudo! ใช่เป็นวิธีที่สะดวกที่สุดในการติดตั้งแพ็คเกจ Python และสามารถเรียกใช้งานได้ที่/usr/local/bin/pipenvแต่ยังหมายความว่าผู้ใช้ทุกคนสามารถมองเห็นแพ็คเกจเฉพาะได้เสมอและโครงการ Python ทั้งหมดที่คุณสร้างขึ้น ให้ใช้แพ็คเกจไซต์ต่อผู้ใช้แทนด้วย--user

pip3 install --user pipenv

pipenv ได้ที่

~/.local/bin/pipenv

macOS

บน macOS Homebrew เป็นวิธีที่แนะนำในการติดตั้ง Pythonเป็นวิธีที่แนะนำในการติดตั้งหลาม คุณสามารถอัพเกรด Python ได้อย่างง่ายดายติดตั้ง Python หลายเวอร์ชันและสลับระหว่างเวอร์ชันต่างๆโดยใช้ Homebrew

หากคุณใช้ Homebrew'ed Python pip install --userถูกปิดใช้งาน แพ็คเกจไซต์ทั่วโลกอยู่ที่

/usr/local/lib/python3.y/site-packages

และคุณสามารถติดตั้งแพ็คเกจ Python ได้อย่างปลอดภัยที่นี่ Python 3.y ยังค้นหาโมดูลใน:

 /Library/Python/3.y/site-packages
 ~/Library/Python/3.y/lib/python/site-packages

Windows

ด้วยเหตุผลดั้งเดิม Python ถูกติดตั้งในC:\Python37. โดยปกติไฟล์ปฏิบัติการ Python จะมีชื่อpy.exeและคุณสามารถรันpipด้วยไฟล์py -m pipไฟล์.

ติดตั้งแพ็คเกจไซต์ส่วนกลางใน

C:\Python37\lib\site-packages

เนื่องจากโดยปกติคุณจะไม่แชร์อุปกรณ์ Windows ของคุณคุณจึงสามารถติดตั้งแพ็คเกจทั่วโลกได้เช่นกัน

py -m pip install pipenv

pipenv มีวางจำหน่ายแล้วที่

C:\Python37\Scripts\pipenv.exe

ฉันไม่แนะนำให้ติดตั้งแพ็คเกจ Python ใน Windows ด้วย--userเนื่องจากไดเร็กทอรีแพ็กเกจไซต์สำหรับผู้ใช้เริ่มต้นอยู่ในโปรไฟล์การโรมมิ่งของ Windows

C:\Users\user\AppData\Roaming\Python\Python37\site-packages 

โปรไฟล์การโรมมิ่งใช้ใน Terminal Services (Remote Desktop, Citrix ฯลฯ ) และเมื่อคุณเข้าสู่ระบบ / ปิดในสภาพแวดล้อมขององค์กร การเข้าสู่ระบบช้าออกจากระบบและรีบูตใน Windows อาจเกิดจากโปรไฟล์การโรมมิ่งขนาดใหญ่


5

การติดตั้ง pipenv ทั่วโลกอาจส่งผลร้ายโดยการเขียนทับการติดตั้ง pip ที่จัดการทั่วโลก / ระบบดังนั้นจึงทำให้เกิดข้อผิดพลาดในการนำเข้าเมื่อพยายามเรียกใช้ pip

คุณสามารถติดตั้ง pipenv ได้ที่ระดับผู้ใช้:

pip install --user pipenv

สิ่งนี้ควรติดตั้ง pipenv ที่ระดับผู้ใช้ใน /home/username/.local เพื่อไม่ให้ขัดแย้งกับ pip เวอร์ชันสากล ในกรณีของฉันมันยังใช้ไม่ได้หลังจากเรียกใช้สวิตช์ '--user' ดังนั้นฉันจึงรันคำสั่ง 'แก้ไขสิ่งที่ฉันเมา' อีกต่อไปหนึ่งครั้งเพื่อคืนค่าสภาพแวดล้อมที่ระบบจัดการ:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

พบ ^ ที่นี่: ข้อผิดพลาดหลังจากอัปเกรด pip: ไม่สามารถนำเข้าชื่อ 'main'

จากนั้นทำสิ่งต่อไปนี้:

mkdir /home/username/.local ... ถ้ายังไม่มี

export PYTHONUSERBASE=/home/username/.local

ตรวจสอบให้แน่ใจว่าการส่งออกมีผล (บิตฉันหนึ่งครั้งในระหว่างกระบวนการนี้):

echo $PYTHONUSERBASE

จากนั้นฉันก็วิ่งpip install --user pipenvและทุกอย่างก็สบายดี จากนั้นฉันสามารถเรียกใช้ pipenv จาก CLI และไม่ได้เขียนทับโมดูล pip ที่จัดการทั่วโลก / ระบบ แน่นอนว่านี่เป็นเรื่องเฉพาะสำหรับผู้ใช้ดังนั้นคุณต้องแน่ใจว่าคุณติดตั้ง pipenv ด้วยวิธีนี้ในขณะที่ทำงานในฐานะผู้ใช้ที่คุณต้องการใช้ pipenv

อ้างอิง:

https://pipenv.readthedocs.io/en/latest/diagnose/#no-module-named-module-name https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv https://pip.pypa.io/en/stable/user_guide/#user-installs



1

หลังจากติดตั้ง pipenv ( sudo pip install pipenv) ฉันยังคงได้รับข้อผิดพลาด "ไม่พบคำสั่ง" เมื่อพยายามเรียกใช้ไฟล์pipenv shellคำสั่ง

ในที่สุดฉันก็แก้ไขด้วยรหัสต่อไปนี้:

pip3 install pipenv
pipenv shell

0

คุณอาจพิจารณาติดตั้งpipenvผ่านpipsi.

curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get -pipsi.py | python3
pipsi install pew
pipsi install pipenv

แต่มีบางประเด็นที่มี MacOS + python3 ในขณะที่เขียนให้ดู1 , 2 ในกรณีของฉันฉันต้องเปลี่ยน bashprompt เป็น#!/Users/einselbst/.local/venvs/pipsi/bin/python



0

สำหรับผู้ใช้ window อาจเกิดจากการติดตั้งที่ขัดแย้งกับ Virtualenv สำหรับฉันมันใช้งานได้เมื่อฉันถอนการติดตั้ง Virtualenv และ pipenv ก่อนจากนั้นติดตั้งเฉพาะ pipenv

pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

ตอนนี้pipenv install xxxทำงานให้ฉัน


0

บน Mac OS X Catalina ดูเหมือนว่าจะเป็นไปตามเส้นทาง Linux ใช้สิ่งใด ๆ :

pip install pipenv
pip3 install pipenv
sudo pip install pipenv
sudo pip3 install pipenv

ติดตั้ง pipenv เป็นหลักที่นี่:

/Users/mike/Library/Python/3.7/lib/python/site-packages/pipenv

แต่มันไม่ใช่ไฟล์ปฏิบัติการและไม่เคยพบ สิ่งเดียวที่ได้ผลสำหรับฉันคือ

pip install --user pipenv

ดูเหมือนว่าจะส่งผลให้__init__.pyไฟล์ในไดเร็กทอรีด้านบนที่มีเนื้อหาแสดงpipenvคำสั่งได้อย่างถูกต้อง

และทุกอย่างก็เริ่มทำงานเมื่อข้อเสนอแนะอื่น ๆ ที่โพสต์และแสดงความคิดเห็นเกี่ยวกับคำถามนี้ล้มเหลว

แพ็คเกจ pipenv ดูค่อนข้างจู้จี้จุกจิก


สำหรับผู้ใช้ Mac รหัสนี้ใช้งานได้เช่นกัน sudo -H python3 -m pip install pipenv
Jay Dangar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.