“ python3” และ“ python” ใช้ตัวแปรพา ธ อื่นหรือไม่


9

คำสั่งpythonเปิดสภาพแวดล้อม Python 2.7.6 ถ้าฉันต้องการตีความสคริปต์ Python 3 ฉันต้องเขียนคำสั่งpython3ใหม่

ฉันเพิ่งติดตั้งแพคเกจnumpy import numpyเพื่อทดสอบการติดตั้งที่ประสบความสำเร็จผมเรียกใช้คำสั่ง มันทำงานได้ดีเมื่อใช้pythonคำสั่ง อย่างไรก็ตามpython3ไม่พบแพ็คเกจ

เป็นไปได้อย่างไร? สองคำสั่งเหล่านี้ใช้ตัวแปรพา ธ ที่ต่างกันหรือไม่? ฉันจะเปลี่ยนพฤติกรรมได้อย่างไร


อาจมีความเกี่ยวข้อง / มีประโยชน์: stackoverflow.com/a/53767029/52074
Trevor Boyd Smith

คำตอบ:


9

คุณพูดถูกพวกเขาใช้สิ่งต่างPYTHONPATH

คุณสามารถนึกถึง Python 2.x และ Python 3.x เป็นสภาพแวดล้อมการเขียนโปรแกรมที่แตกต่างอย่างสิ้นเชิง และใช่พวกเขาเก็บแพคเกจของพวกเขาในสถานที่ต่างกัน

หากต้องการให้ทำงานได้ดีคุณสามารถพิมพ์:

sudo apt-get install python3-numpy

ถ้าคุณต้องการค้นหาตำแหน่งที่เก็บแพคเกจอย่างแน่นอนคุณสามารถดู__path__แอตทริบิวต์ของออบเจ็กต์โมดูล:

>>> import numpy
>>> numpy.__path__
['/usr/local/lib/python3.5/site-packages/numpy']

คุณยังสามารถติดตั้งpython3-pipและเรียกใช้pip3 install whateverเพื่อติดตั้งแพคเกจสำหรับ Python 3 ด้วยPipสำหรับแพ็คเกจที่ไม่มีใน Ubuntu python3-whateverได้

ในกรณีที่คุณสับสนเกี่ยวกับความแตกต่างระหว่าง distutils, setuptools, easy_install, pip และส่วนที่เหลือให้ใช้ pip นั่นคือสิ่งที่ยอดเยี่ยม :)


2
พวกเขาไม่ได้ใช้ PYTHONPATH ที่แตกต่างกัน แต่ python2 ใช้เฉพาะแพ็คเกจใน $ PREFIX / lib / python2 * และ python3 เท่านั้นที่อยู่ใน $ PREFIX / lib / python3 *
dalloliogm

4

PATHไม่มีพวกเขาใช้เดียวกัน แต่นี้PATHปัญหาไม่ได้อยู่กับ

Python 2 และ Python 3 มีความแตกต่างกันมากพอที่จะต้องเขียนแพ็คเกจแยกต่างหากสำหรับทั้งคู่ คุณไม่สามารถใช้แพคเกจที่เขียนขึ้นสำหรับอันหนึ่งกับอีกอันหนึ่งได้

ใน Ubuntu, โมดูลเหล่านี้จะถูกเก็บไว้ในสถานที่ที่แตกต่างกันและจะบรรจุแยก - python-numpyสำหรับงูหลาม 2 python3-numpyหลาม 3. หากท่านต้องการ numpy กับงูหลาม 3 python3-numpyติดตั้ง

$ python3 -c 'import sys; print (sys.path)'
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/home/muru/.local/lib/python3.4/site-packages', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
$ python2 -c 'import sys; print (sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

3

อันที่จริงทั้งสองกำลังนำเข้าโมดูลจากสถานที่ต่างกัน:

  • Python2.7: /usr/lib/python2.7/dist-packages/numpy/
  • Python3.x: /usr/lib/python3/dist-packages/numpy/

เพื่อให้สามารถนำเข้าnumpyพร้อมล่ามทั้งสองให้แน่ใจว่าได้ติดตั้งแพคเกจที่สอดคล้องกัน:

  • Python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.