วิธีทำให้ Conda และ Virtualenv ทำงานบน mac OS Catalina ได้อย่างไร


12

ก่อนหน้านี้ฉันใช้ Conda ทำงานได้อย่างราบรื่นบน Mojave แต่ฉันพบว่าการอัพเกรดเป็น Catalina จะย้ายโฟลเดอร์ "anaconda3" ไปยังเดสก์ท็อปของคุณ> รายการที่ย้าย> ความปลอดภัย> anaconda3 ดูเหมือนว่าการตั้งค่าความปลอดภัยของ Catalina อาจไม่อนุญาตให้แอปพลิเคชันติดตั้งโดยตรงภายใต้ไดเรกทอรีผู้ใช้อีกต่อไป

ฉันลองคำแนะนำที่นี่เขียนไว้ด้านล่าง:

สวัสดีฉันอาจมีทางออก

  • คัดลอกโฟลเดอร์ anaconda3 ที่อยู่ในรายการที่ย้ายไปยัง / Users / myname /
  • เปิด Terminal
  • ป้อน: export PATH = '' / ผู้ใช้ / myname / anaconda3 / bin: $ PATH "
  • ป้อน: conda init zsh

มันได้ผล! โชคดี!

แต่มันไม่ได้ผลสำหรับฉัน หลังจากที่conda init zshฉันได้รับ:

-bash: / Users / USER / anaconda3 / bin / conda: / anaconda3 / bin / python: ล่ามที่ไม่ดี: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

ฉันจะเรียกใช้ Conda และทำงานอีกครั้งได้อย่างไรโดยไม่สูญเสียสภาพแวดล้อมเสมือนจริงทั้งหมดของฉัน ขอบคุณ!


ปรับปรุง

ฉันได้รับ Conda มาทำงานตามคำแนะนำของ @Ted Shaowang ซึ่งหมายความว่าconda env listจะแสดงสภาพแวดล้อมเสมือนจริงทั้งหมดที่สร้างผ่าน Conda

อย่างไรก็ตามฉันยังคงประสบปัญหาvirtualenvเนื่องจากฉันเปลี่ยนตำแหน่งไฟล์ anaconda3 ที่เป็นค่าเริ่มต้นจึงไม่พบ python

.virtualenvs/env/bin/pythonไม่พบไฟล์ปฏิบัติการของหลามที่ ฉันจำเป็นต้องทำการเปลี่ยนแปลงเพิ่มเติมvirtualenvหรือไม่เพื่อให้งูเหลือมทำงานได้เช่นกัน?


จากข้อผิดพลาดของคุณดูเหมือนว่าคุณยังใช้อยู่bashแต่วิธีแก้ปัญหาที่แนะนำนั้นใช้สำหรับzsh(ค่าเริ่มต้นของ Catalina ใหม่) ลองconda init bashแทน
merv

ฉันได้รับข้อผิดพลาดเดียวกัน bashไม่ทำงานเช่นกัน
Kaymal

คำตอบ:


6

ฉันมีปัญหาเดียวกันที่แน่นอนและสิ่งนี้ใช้ได้กับฉัน:

หลังจากที่คุณย้ายอนาคอนดาจาก "รายการที่ย้าย" ไปยัง~/anaconda3แก้ไขบรรทัดแรกของ~/anaconda3/bin/condaไฟล์จาก#!/anaconda3/bin/pythonไป#!/Users/USERNAME/anaconda3/bin/pythonยังเพื่อสะท้อนการเปลี่ยนแปลง


1
pip นี้มีผลและการตั้งค่า Jupyter หรือไม่?
rrz0

1
ดูเหมือนว่านี่จะไม่สามารถแก้ปัญหาทั้งหมดที่เกี่ยวข้องกับ anaconda3 และ python ได้ ฉันได้รับข้อผิดพลาด: ไม่สามารถเรียกใช้โปรแกรม"/Users/USER/.virtualenvs/env/bin/python"ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว เมื่อฉันเช็คอิน Finder ไฟล์จะหายไปและไม่สามารถระบุตำแหน่งได้
rrz0

3

ฉันอาจจะงดใช้โซลูชันข้างต้น นั่น~/anaconda3/binไดเรกทอรีมีจำนวนมาก runnables (ไม่ได้เป็นเพียงcondaหนึ่ง) ที่จะต้องมีการเปลี่ยนแปลงในทางคู่มือฉบับนี้ ตัวอย่างเช่นหากคุณไม่ทำการเปลี่ยนแปลงแบบเดียวกันคุณจะไม่สามารถเรียกใช้jupyter notebookอย่างใดอย่างหนึ่งได้ไม่ว่าจะจากbaseenvs อื่นหรือไม่ก็ตาม

คำแนะนำของฉัน: ลองรับไฟล์ข้อกำหนดสำหรับ envs เสมือนของคุณและทำการติดตั้งใหม่ คุณสามารถใช้pipreqsเพื่อรับข้อกำหนดที่ใช้สำหรับแต่ละโครงการ: https://www.idiotinside.com/2015/05/10/python-auto-generate-requirements-txt/


ขอบคุณสำหรับคำแนะนำ ในขณะที่คุณพูดปัญหายังคงอยู่ด้วยvirtualenvเช่นกัน
rrz0

3
โปรดดูโพสต์บล็อกแนะนำเครื่องมือในการแก้ไขปัญหาเหล่านี้: anaconda.com/
......

3

ไม่มีวิธีแก้ปัญหาใดที่จะทำงานได้อย่างสมบูรณ์โดยไม่แก้ไขรายการคำนำหน้าแบบฮาร์ดโค้ดในไฟล์ มีคำอธิบายที่ยาวขึ้นและการแก้ไขที่แนะนำที่https://www.anaconda.com/how-to-restore-anaconda-after-macos-catalina-update/


1

ในทางเทคนิคนี่เป็นการติดตั้งแอนนาคอนดาอีกครั้ง แต่ฉันกู้คืนคอนโดทั้งหมดของฉันดังนั้นหวังว่านี่จะเป็นทางออกที่ยอมรับได้!

นี่คือวิธีที่ฉันได้ทำงานกับ Catalina เมื่อไม่กี่นาทีที่ผ่านมา (ตอนนี้ใช้ z-shell): - ตรวจสอบการมีอยู่ของไดเรกทอรี "Relocated Items" บนเดสก์ท็อปของฉันและไดเรกทอรี "anaconda3" และเนื้อหาภายใน - สำรวจเข้าไป envs ไดเรกทอรีภายใต้ "anaconda3" และเปิดหน้าต่างค้นหาไว้ (ดูภาพหน้าจอ)

ป้อนคำอธิบายรูปภาพที่นี่

แล้ว:

  • เปิด Terminal ใหม่ (z-shell)
  • วิ่ง (ติดตั้งไปยัง / usr / local / anaconda3):

    ชงถังติดตั้งงูใหญ่

  • หลังจากติดตั้งสำเร็จฉันเปิดไฟล์ ~ / .zshrc (สำหรับนามแฝง z-shell ของฉัน) และเพิ่มบรรทัดต่อไปนี้:

    ส่งออก PATH = "/ usr / local / anaconda3 / bin: $ PATH"

  • บันทึกไฟล์ ~ / .zshrc ของฉันแล้วโหลดใหม่ด้วย:

    แหล่งที่มา ~ / .zshrc

  • เพื่อตรวจสอบว่าคำสั่ง conda ทำงานได้ในตอนนี้ฉันวิ่ง:

    รายการ env conda

  • สำหรับฉันนี่แสดงให้เห็นว่าฐาน env และนั่นก็คือ

  • จากนั้นเปิด Finder ไปยังตำแหน่ง envs ใหม่: open / usr / local / anaconda3 / envs /

  • ฉันลาก (ย้าย) envs เก่าทั้งหมดของฉันลงในโฟลเดอร์ envs ใหม่แล้ววิ่ง:

    รายการ env conda

และ envs เก่าทั้งหมดของฉันกลับมาแล้ว! :)

  • อัปเดต PyCharm interpreter / พา ธ env ของฉันเพื่อสะท้อนตำแหน่งใหม่ของ envs เหล่านี้ (ต้องรีสตาร์ท PyCharm หลังจาก แต่ตอนนี้มันใช้งานได้!)
  • DONE

ขอบคุณสำหรับคำแนะนำของคุณ ใช้งานได้virtualenvด้วยหรือไม่ ฉันมีบางอย่างvirtualenvsที่ฉันไม่สามารถใช้ใน Pycharm ขณะที่ฉันได้รับ `ข้อผิดพลาด: ไม่สามารถเรียกใช้โปรแกรม" /Users/USER/.virtualenvs/baseline_env/bin/python "ไม่พบไฟล์หรือไดเรกทอรี" ใน Finder ฉันยังได้รับ"The original item python cannot be found.
rrz0

1
โปรดดูโพสต์บล็อกแนะนำเครื่องมือเพื่อแก้ไขการเชื่อมต่อที่เสียหายมากขึ้น: anaconda.com/ ...
msarahan

1
@ Rrz0 ขึ้นอยู่กับสิ่งที่คุณเขียนฉันเดาเส้นทางไป virtualenv ผิด มันแฮ็ก แต่ถ้าคุณสามารถไปยัง virtualenv ของคุณฉันคิดว่าคุณควรจะสามารถคัดลอกเส้นทางไปยังมันและแก้ไขรายการใน PyCharm (ถ้า virtualenvs อยู่ในการจัดการรายการที่เคลื่อนไหวแล้วฉันไม่แน่ใจว่าจะแนะนำให้คุณ ใส่พวกเขา) - หากคุณสามารถเข้าถึง virtualenvs เก่าของคุณคุณสามารถ (หนึ่งต่อหนึ่ง) เปิดใช้งานพวกเขาจากเปลือกและเรียกใช้: pip ตรึง> ข้อกำหนด _VENV_NAME.txt - ใน PyCharm สร้าง virtualenvs ใหม่ - เปิดใช้งานแต่ละ virtualenv ใหม่และเรียกใช้: pip ติดตั้ง - r requirements_VENV_NAME.txt
Phil S

ขอบคุณ @PhilS บางสิ่งบางอย่างในสายเหล่านั้นก็ทำงานได้
rrz0

0

ไม่แน่ใจว่านี่ถือว่าเป็นความคิดเห็นหรืออย่างน้อยก็เป็นคำตอบชั่วคราว แต่ฉันจะไม่พยายามแก้ไขปัญหาความเข้ากันได้ของ Catalina กับ Anaconda ในตอนนี้ ดูปัญหาGitHubนี้


0

ฉันมีปัญหาเดียวกันและสิ่งนี้ใช้ได้กับฉัน: วิธีแก้ไขของฉัน:

  1. คัดลอก anaconda3 ของคุณจากโฟลเดอร์รายการที่ย้าย
  2. วางในผู้ใช้ / ชื่อผู้ใช้ของคุณ
  3. เปิดไฟล์ conda ใน anaconda3 / bin ด้วยเครื่องมือแก้ไขและแก้ไขบรรทัดแรก#!/anaconda3/bin/pythonเป็น#!/Users/YourUserName/anaconda3/bin/python
  4. บันทึกและเรียกใช้ไฟล์ conda
  5. เปิด Terminal
  6. เรียกใช้สิ่งนี้: export PATH=''/Users/YourUserName/anaconda3/bin:$PATH"
  7. วิ่ง conda init zsh

ฉันจำเป็นต้องทำการเปลี่ยนแปลงเพิ่มเติมหรือไม่เพื่อให้งูเหลือมทำงานได้virtualenvเช่นกัน?
rrz0

0

ฉันเกิดปัญหาเดียวกันและวิธีแก้ปัญหาต่อไปนี้ใช้ได้สำหรับฉันและนี่เป็นวิธีที่ง่ายที่สุด:

แทนที่จะยุ่งเกี่ยวกับการคัดลอกไฟล์ anaconda3 จากรายการที่ถูกย้ายไปยังไดเรกทอรีผู้ใช้ / ชื่อผู้ใช้ควรจะติดตั้งเวอร์ชันล่าสุดของตัวนำทาง anaconda จากเว็บไซต์ทางการ: https://www.anaconda.com/distribution/#macos

ในระหว่างการติดตั้งมันจะถามสิทธิ์บางอย่างซึ่งเป็นผลมาจากนโยบายความปลอดภัยของ Apple ใหม่ให้สิทธิ์พวกเขาและมันทำงานได้อย่างที่ควรหลังจากการติดตั้งใหม่นี้!


0

นี่คือสิ่งที่ได้ผลสำหรับฉัน

นี่คือไฟล์ส่วนหัวของฉัน (Catalina 10.15):

/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h

วิ่งsudo find /Library -name stdio.hเพื่อดูว่าคุณอยู่ที่ไหน

ไฟล์ส่วนหัว Mojave 10.14:

$ sudo find /Library -name stdio.h 
/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h

ดังจะเห็นได้ว่าตอนนี้ SDKs ถูกแบ่งออกเป็น MACOSX10.14 และ 10.15 ซึ่งแตกต่างจาก Mojave

TLDR

ดังนั้นนี่คือโฟลเดอร์ SDK ของฉันใน Catalina:

<img width = "208" alt = "รูปภาพ" src = "https://user-images.githubusercontent.com/31866965/67324292-e49a1e00-f513-11e9-997e-9c49e7badbe5.png">

  1. เปลี่ยนชื่อMacOSX.sdkเป็นMacOSX_orig.sdk
  2. คลิกขวาที่ MacOSX10.14.sdk
  3. ซ้ำ
  4. เปลี่ยนชื่อโฟลเดอร์ซ้ำเป็น MacOSX.sdk

โครงสร้างโฟลเดอร์ของคุณควรมีลักษณะดังนี้:

<img width = "195" alt = "image" src = "https://user-images.githubusercontent.com/31866965/67318914-74d46500-f50c-11e9-879d-ef0cd3e458cc.png">

อย่างนี้เราก็ใช้ OSX sdk เวอร์ชั่นก่อนหน้าเป็น sysroot หวังว่านี่จะช่วยได้

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