Score:0

ImportError: ไม่มีโมดูลชื่อ 'pip._vendor.packaging'

ธง in

ฉันต้องการซอฟต์แวร์บางตัวที่ทำงานบน Python 3.5

ฉันใช้ Ubuntu 21.10

ฉันได้รับข้อผิดพลาดนี้:

(foobar_addressbook) guettli@p15:~/foobar/projects/foobar_addressbook$ tox -e py35-django18 


py35-django18 สร้าง: /home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18
ข้อผิดพลาด: การเรียกใช้ล้มเหลว (รหัสออก 1), ไฟล์บันทึก: /home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/log/py35-django18-1.log
================================================== ================== เริ่มบันทึก ============================== =======================================
Traceback (การโทรครั้งล่าสุดล่าสุด):
  ไฟล์ "/usr/local/lib/python3.5/runpy.py", บรรทัด 193 ใน _run_module_as_main
    "__main__", mod_spec)
  ไฟล์ "/usr/local/lib/python3.5/runpy.py", บรรทัด 85 ใน _run_code
    ผู้บริหาร (รหัส run_globals)
  ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/pip/__main__.py" บรรทัดที่ 23 ใน <โมดูล>
    จาก pip._internal.cli.main นำเข้าหลักเป็น _main # isort:skip # noqa
  ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/pip/_internal/cli/main.py" บรรทัดที่ 10 ใน <โมดูล>
    จาก pip._internal.cli.autocompletion นำเข้าการเติมข้อความอัตโนมัติ
  ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/pip/_internal/cli/autocompletion.py" บรรทัดที่ 9 ใน <โมดูล>
    จาก pip._internal.cli.main_parser นำเข้า create_main_parser
  ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/pip/_internal/cli/main_parser.py" บรรทัดที่ 7 ใน <โมดูล>
    จาก pip._internal.cli นำเข้า cmdoptions
  ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/pip/_internal/cli/cmdoptions.py" บรรทัดที่ 23 ใน <โมดูล>
    จาก pip._vendor.packaging.utils นำเข้า canonicalize_name
ImportError: ไม่มีโมดูลชื่อ 'pip._vendor.packaging'

================================================== =================== ปลายล็อก ============================= =========================================
_____________________________________________________________________ สรุป ______________________________________________________________________
ข้อผิดพลาด: py35-django18: InvocationError สำหรับคำสั่ง /home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/bin/python -m pip freeze (ออกด้วยรหัส 1)

มีความคิดว่าฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร

คำถามที่เกี่ยวข้อง: ข้อผิดพลาดการแบ่งส่วนขณะติดตั้ง Python 3.5: surepip

Score:0
ธง in

ขั้นตอนที่ 1

pip ใน virtualenv ดูเหมือนว่าจะใช้งานไม่ได้ ดังนั้น bootstrap pip:

ขด https://bootstrap.pypa.io/pip/3.5/get-pip.py | .tox/py35-django18/bin/python - 

ขั้นตอนที่ 2

ตอนนี้ฉันได้รับข้อผิดพลาดนี้

    ข้อผิดพลาด: คำสั่งผิดพลาดโดยมีสถานะออก 1:
     คำสั่ง: /home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-xsbc7r69/django-celery_63fa83d5391f499a9cc375c1c1fed8b6/setup.py'"'"'; __file__='"'"'/tmp/pip-install-xsbc7r69/django-celery_63fa83d5391f499a9cc375c1c1fed8b6/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)( __file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec( คอมไพล์ (รหัส, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-6esk_zf9
         cwd: /tmp/pip-install-xsbc7r69/django-celery_63fa83d5391f499a9cc375c1c1fed8b6/
    เอาต์พุตที่สมบูรณ์ (7 บรรทัด):
    Traceback (การโทรครั้งล่าสุดล่าสุด):
      ไฟล์ "<string>" บรรทัดที่ 1 ใน <โมดูล>
      ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/setuptools/__init__.py" บรรทัดที่ 18 ใน <โมดูล>
        นำเข้า setuptools.version
      ไฟล์ "/home/guettli/foobar/projects/foobar_addressbook/.tox/py35-django18/lib/python3.5/site-packages/setuptools/version.py" บรรทัดที่ 1 ใน <โมดูล>
        นำเข้า pkg_resources
    ImportError: ไม่มีโมดูลชื่อ 'pkg_resources'

ในการแก้ไขปัญหานี้:

.tox/py35-django18/bin/python -m pip install -U setuptools

ตอนนี้ virtualenv ของ tox กำลังทำงานอยู่

หากคุณรู้วิธีที่ง่ายกว่าในการทำให้ Python3.5 ทำงานบน Ubuntu 21.10 โปรดแสดงความคิดเห็น ขอขอบคุณ.

ru flag
วิธีทำให้ Python โบราณทำงานบน Ubuntu 21.10 ได้คือใช้ PyENV เพื่อตั้งค่า หรือตรวจสอบให้แน่ใจว่าคุณติดตั้ง PIP ด้วยการคอมไพล์ python ของคุณ (ไม่ใช่ค่าเริ่มต้น!) ซึ่งจะทำให้ setuptools และสิ่งอื่นๆ พร้อมใช้งานในสภาพแวดล้อมของคุณตามค่าเริ่มต้น
guettli avatar
in flag
@ThomasWard ฉันลอง pyenv ก่อน แต่มันล้มเหลวด้วยข้อผิดพลาด seg ดู https://askubuntu.com/questions/1376525/segmentation-fault- while-installing-python-3-5-ensurepip
ru flag
ฉันขอถามได้ไหมว่าทำไมคุณ *ต้องการ* Python 3.5 ซึ่งมีอายุหลายปีแล้ว การอัปเดตแอปพลิเคชันของคุณสำหรับ python รุ่นใหม่ไม่สามารถทำได้ด้วยเหตุผลบางประการหรือไม่?
guettli avatar
in flag
@ThomasWard Python3.5 เป็นขั้นตอนขั้นกลางที่จะได้รับจาก 2.7 ถึง 3.8(แอป django นี้ใช้ Django 1.4 ในขณะนี้)
ru flag
ในฐานะคนที่ต้องย้ายจาก Django เก่าไป Django ล่าสุด ขั้นตอน 'ขั้นกลาง' ของคุณน่าจะทำให้คุณเศร้าโศกมากกว่าเขียนใหม่ทั้งหมด เพราะคุณจะต้องเขียนใหม่อีกครั้งเพื่อไปยัง Django ที่ใหม่กว่าที่เข้ากันได้กับ py3.8
guettli avatar
in flag
@ThomasWard ฉันไม่ต้องการใช้ PyENV มันทำสิ่งมหัศจรรย์ที่ฉันไม่ต้องการทำ ตัวอย่างเช่น มันเปลี่ยน PATH และต้องเปิดใช้งานผ่าน .profile สิ่งที่ฉันต้องการคือ `/usr/local/bin/python3.5` ฉันไม่ต้องการเครื่องมือเพื่อสลับระหว่างเวอร์ชัน Python

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา