วิธีการติดตั้งโมดูลหลามโดยไม่มีการเข้าถึงรูท?


220

ฉันกำลังเรียนมหาวิทยาลัยและได้รับ 'บัญชีการเรียนการสอน' ซึ่งเป็นบัญชีโรงเรียนที่ฉันสามารถทำงานได้ ฉันต้องการใช้งาน Numpy, matplotlib, scipy code บนเครื่องนั้น แต่ฉันไม่สามารถติดตั้งโมดูลเหล่านี้ได้เนื่องจากฉันไม่ใช่ผู้ดูแลระบบ

ฉันจะทำการติดตั้งได้อย่างไร


14
คุณสามารถส่ง - ผู้ใช้หรือ - คำนำหน้าเพื่อ setup.py สำหรับแพ็คเกจที่คุณกำลังติดตั้งเพื่อติดตั้งในเครื่อง ดูการติดตั้งแบบแจ้งเตือนสำหรับโมดูล Python
arunkumar

คำตอบ:


306

ในสถานการณ์ส่วนใหญ่ทางออกที่ดีที่สุดคือการใช้ตำแหน่ง "ผู้ใช้เว็บไซต์" (ดูรายละเอียดPEP ) โดยการเรียกใช้:

pip install --user package_name

ด้านล่างเป็นวิธี "แบบแมนนวล" เพิ่มเติมจากคำตอบดั้งเดิมของฉันคุณไม่จำเป็นต้องอ่านหากวิธีการด้านบนใช้ได้ผลสำหรับคุณ


ด้วย easy_install คุณสามารถทำได้:

easy_install --prefix=$HOME/local package_name

ซึ่งจะติดตั้งลงใน

$HOME/local/lib/pythonX.Y/site-packages

(โฟลเดอร์ 'local' เป็นชื่อทั่วไปที่หลาย ๆ คนใช้ แต่แน่นอนว่าคุณสามารถระบุโฟลเดอร์ที่คุณมีสิทธิ์เขียน)

คุณจะต้องสร้างด้วยตนเอง

$HOME/local/lib/pythonX.Y/site-packages

และเพิ่มลงในPYTHONPATHตัวแปรสภาพแวดล้อมของคุณ(มิฉะนั้น easy_install จะบ่น - btw รันคำสั่งด้านบนหนึ่งครั้งเพื่อค้นหาค่าที่ถูกต้องสำหรับ XY)

หากคุณไม่ได้ใช้easy_installให้มองหาตัวเลือกคำนำหน้าสคริปต์การติดตั้งส่วนใหญ่ให้คุณระบุ

ด้วย pip คุณสามารถใช้:

pip install --install-option="--prefix=$HOME/local" package_name

1
จะทำอย่างไรถ้าหลามไม่มีpipและeasy_installมีอยู่?
Girardi

การติดตั้งทำได้ดี (วิธี pip) แต่การนำเข้า package_name ไม่ทำงาน ฉันจำเป็นต้องเปลี่ยน / เพิ่มการกำหนดค่าบางอย่างหรือไม่ ยังมีการคัดลอกการติดตั้งไปยังที่ไหน (โฟลเดอร์ฉลาด)
idoda

2
// @AnotherDayAnotherRob ว่าเสียงเหมือนดีคำถาม
นาธาน Basanese

2
มันอาจจะทำให้ความรู้สึกที่จะปรับปรุงคำตอบและนำ--userคำแนะนำที่ด้านบน :).
VasiliNovikov

1
@Girardi ในกรณีที่คุณติดตั้ง python จาก src ไปยัง local dir / my_python / มันจะมีประโยชน์ในการติดตั้ง pip ในตำแหน่งนี้เป็นอันดับแรกด้วย: wget --no-check-certificate bootstrap.pypa.io/get-pip.py -O - ​​| / my_python / bin / python - จากนั้นคุณสามารถติดตั้งโมดูลอื่น ๆ ด้วย pip + คำนำหน้า
teng_wenxuan

51

ไม่มีสิทธิ์ในการเข้าถึงหรือติดตั้งeasy_install?

จากนั้นคุณสามารถสร้าง python virtualenv( https://pypi.python.org/pypi/virtualenv ) และติดตั้งแพ็คเกจจากสภาพแวดล้อมเสมือนนี้

การดำเนินการ 4 คำสั่งในเชลล์จะเพียงพอ (แทรกการเปิดตัวปัจจุบันเช่น 16.1.0 สำหรับ XXX):

$ curl --location --output virtualenv-X.X.X.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xvfz virtualenv-X.X.X.tar.gz
$ python pypa-virtualenv-YYYYYY/src/virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install package_name

แหล่งที่มาและข้อมูลเพิ่มเติม: https://virtualenv.pypa.io/en/latest/installation/


1
คำตอบนี้มีประโยชน์สำหรับฉันในระบบที่ไม่มีการpipติดตั้ง
Dan Stowell

ฉันลองใช้ตัวแปรสำหรับการติดตั้งหลามแบบโลคัล curl --silent --show-error --retry 5 bootstrap.pypa.io/get-pip.py | ~ / Python-2.7.8 / python
Neerav

3
ดูเหมือนว่าแหล่งที่มาจะได้รับการย้ายและข้างต้นไม่ได้ทำงานนอกกรอบ คำแนะนำที่คล้ายกันที่https://virtualenv.pypa.io/en/latest/installation/ทำงานได้ดี :)
Andras Deak

13

คุณสามารถเรียกใช้ easy_install เพื่อติดตั้งแพ็กเกจหลามในโฮมไดเร็กตอรี่ของคุณได้แม้ไม่มีการเข้าถึงรูท มีวิธีมาตรฐานในการทำเช่นนี้โดยใช้ไซต์ USER_BASE ซึ่งมีค่าเริ่มต้นเป็น $ HOME / .local หรือ $ HOME / Library / Python / 2.7 / bin และรวมไว้ในค่าเริ่มต้นใน PYTHONPATH

หากต้องการทำสิ่งนี้ให้สร้าง. pydistutils.cfg ในโฮมไดเร็กตอรี่ของคุณ:

cat > $HOME/.pydistutils.cfg <<EOF
[install]
user=1
EOF

ตอนนี้คุณสามารถรัน easy_install โดยไม่มีสิทธิ์รูท:

easy_install boto

นอกจากนี้ยังช่วยให้คุณเรียกใช้ pip โดยไม่ต้องเข้าถึงรูท:

pip install boto

มันใช้งานได้สำหรับฉัน

แหล่งที่มาจากบล็อกของ Wesley Tanaka: http://wtanaka.com/node/8095


1
สิ่งนี้ใช้ได้สำหรับฉันที่จะติดตั้งโดยไม่ต้องเข้าถึงรูทบนเซิร์ฟเวอร์ linux ขอบคุณ แต่ฉันไม่รู้ว่าทำไมมันถึงได้ผล ร่างกายใดสามารถให้คำใบ้?
ChathuraG

9

หากคุณต้องใช้setup.pyสคริปต์distutils มีบางตัวเลือกบรรทัดคำสั่งสำหรับการบังคับให้ปลายทางการติดตั้ง ดูhttp://docs.python.org/install/index.html#alternate-installation หากเกิดปัญหาซ้ำนี้คุณสามารถตั้งค่าไฟล์การกำหนดค่า distutils ดูhttp://docs.python.org/install/index.html#inst-config-files

การตั้งค่าตัวแปร PYTHONPATH อธิบายไว้ในโพสต์ tihos


1
ขอบคุณมาก. ฉันติดตั้งlxmlห้องสมุดสำเร็จแล้วโดยใช้python <lxml_distrib_dir>/setup.py install --home=<dir>
Serge S.

6

คำถามสำคัญ การใช้เซิร์ฟเวอร์ฉัน (Ubuntu 12.04) มีแต่ไม่easy_install3 pip3นี่คือวิธีที่ฉันติดตั้ง Pip แล้วแพ็คเกจอื่น ๆ ในโฟลเดอร์บ้านของฉัน

  1. ขอให้ผู้ดูแลระบบติดตั้งแพ็คเกจ Ubuntu python3-setuptools

  2. จุดติดตั้ง

แบบนี้:

 easy_install3 --prefix=$HOME/.local pip
 mkdir -p $HOME/.local/lib/python3.2/site-packages
 easy_install3 --prefix=$HOME/.local pip
  1. เพิ่ม Pip (และแอพ Python อื่น ๆ ลงในพา ธ )

แบบนี้:

PATH="$HOME/.local/bin:$PATH"
echo PATH="$HOME/.local/bin:$PATH" > $HOME/.profile
  1. ติดตั้งแพ็คเกจ Python

แบบนี้

pip3 install --user httpie

# test httpie package
http httpbin.org

4

ฉันใช้JuJuซึ่งโดยทั่วไปจะอนุญาตให้มีการแจกจ่ายลินุกซ์เล็ก ๆ (มีเพียงผู้จัดการแพ็คเกจ) ในไดเรกทอรี $ HOME / .juju ของคุณ

อนุญาตให้มีระบบที่กำหนดเองของคุณในโฮมไดเร็กตอรี่ที่เข้าถึงได้ผ่าน proot และดังนั้นคุณสามารถติดตั้งแพ็กเกจใด ๆ โดยไม่ต้องใช้สิทธิ์รูท มันจะทำงานได้อย่างถูกต้องกับการแจกแจงลินุกซ์ที่สำคัญทั้งหมดข้อ จำกัด เพียงอย่างเดียวคือ JuJu สามารถรันบนเคอร์เนลลินุกซ์ด้วยรุ่นที่แนะนำขั้นต่ำ 2.6.32

ตัวอย่างเช่นหลังจากติดตั้ง JuJu เพื่อติดตั้ง pip เพียงแค่พิมพ์ต่อไปนี้:

$>juju -f
(juju)$> pacman -S python-pip
(juju)> pip


1

ติดตั้ง virtualenv ในเครื่อง (ที่มาของคำแนะนำ ):

สำคัญ:ใส่รุ่นปัจจุบัน (เช่น16.1.0 ) สำหรับXXX
ตรวจสอบชื่อของแฟ้มที่แยกและใส่มันสำหรับyyyyy

$ curl -L -o virtualenv.tar.gz https://github.com/pypa/virtualenv/tarball/X.X.X
$ tar xfz virtualenv.tar.gz
$ python pypa-virtualenv-YYYYY/src/virtualenv.py env

ก่อนที่คุณจะสามารถใช้หรือติดตั้งแพ็คเกจใด ๆ ที่คุณต้องใช้กับsourceสภาพแวดล้อม Python เสมือนของคุณenv:

$ source env/bin/activate

ในการติดตั้งแพ็กเกจหลามใหม่ (เช่นจำนวนมาก) ให้ใช้:

(env)$ pip install <package>

นี่คือคำแนะนำอย่างมากสำหรับรุ่นที่ปรับปรุงแล้ว คำแนะนำของเขาล้าสมัย การแก้ไขของฉันถูกปฏิเสธ เพราะการที่ฉันโพสต์มันเป็นคำสั่งใหม่
Niklas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.