ฉันใหม่สำหรับการจัดการแพ็คเกจ Conda และฉันต้องการรับ Python เวอร์ชันล่าสุดเพื่อใช้ f-strings ในรหัสของฉัน ปัจจุบันเวอร์ชันของฉันคือ ( python -V
):
Python 3.5.2 :: Anaconda 4.2.0 (x86_64)
ฉันจะอัพเกรดเป็น Python 3.6 ได้อย่างไร
ฉันใหม่สำหรับการจัดการแพ็คเกจ Conda และฉันต้องการรับ Python เวอร์ชันล่าสุดเพื่อใช้ f-strings ในรหัสของฉัน ปัจจุบันเวอร์ชันของฉันคือ ( python -V
):
Python 3.5.2 :: Anaconda 4.2.0 (x86_64)
ฉันจะอัพเกรดเป็น Python 3.6 ได้อย่างไร
คำตอบ:
อนาคอนด้ายังไม่ได้ปรับปรุงไพ ธ อนภายในเป็น 3.6
a) วิธีที่ 1
conda update python
conda update anaconda
หากคุณต้องการอัพเกรดระหว่างเวอร์ชันไพ ธ อนขนาดใหญ่เช่น 3.5 เป็น 3.6 คุณจะต้องทำ
conda install python=$pythonversion$
b) วิธีที่ 2 - สร้างสภาพแวดล้อมใหม่ (วิธีที่ดีกว่า)
conda create --name py36 python=3.6
c) เพื่อรับ python ล่าสุดที่สมบูรณ์ (3.6.5 ณ เวลาที่เขียน)
conda create --name py365 python=3.6.5 --channel conda-forge
คุณสามารถดูทั้งหมดนี้ได้จากที่นี่
โปรดอ้างถึงสิ่งนี้สำหรับการอัพเกรดด้วยกำลัง
แก้ไข: ตอนนี้มีงูหลาม 3.6 รุ่นที่นี่
conda update python
ได้ ดูที่นี่: conda.pydata.org/docs/py2or3.html#update-or-upgrade-python
conda update python
เพิ่งพาฉันจาก 3.6.5 ถึง 3.7.0 เรียบร้อย!
conda install python=$pythonversion$
มีเครื่องหมายเท่ากับเดียว
การสร้างสภาพแวดล้อมใหม่จะติดตั้ง python 3.6:
$ conda create --name 3point6 python=3.6
Fetching package metadata .......
Solving package specifications: ..........
Package plan for installation in environment /Users/dstansby/miniconda3/envs/3point6:
The following NEW packages will be INSTALLED:
openssl: 1.0.2j-0
pip: 9.0.1-py36_1
python: 3.6.0-0
readline: 6.2-2
setuptools: 27.2.0-py36_0
sqlite: 3.13.0-0
tk: 8.5.18-0
wheel: 0.29.0-py36_0
xz: 5.2.2-1
zlib: 1.2.8-3
conda create --name 3point6 python=3
(เพิ่ม=3
ที่ส่วนท้าย) ทำให้เป็นเวอร์ชั่นของ python3
ฉันพบหน้านี้พร้อมคำแนะนำโดยละเอียดเพื่ออัปเกรด Anaconda เป็น Python เวอร์ชั่นใหม่ที่สำคัญกว่า (จาก Anaconda 4.0+) ครั้งแรก
conda update conda
conda remove argcomplete conda-manager
ฉันยังต้องconda remove
แพคเกจบางอย่างไม่อยู่ในรายการอย่างเป็นทางการ:
คุณอาจได้รับUnsatisfiableError
ข้อผิดพลาดเพิ่มเติม- เพียงเพิ่มแพ็คเกจเหล่านั้นในรายการลบทั้งนี้ขึ้นอยู่กับแพ็คเกจที่ติดตั้งในระบบของคุณ ถัดไปติดตั้งเวอร์ชันของ Python
conda install python==3.6
ซึ่งใช้เวลาสักครู่หลังจากที่มีข้อความระบุไว้conda install anaconda-client
ฉันก็เลยทำ
conda install anaconda-client
ซึ่งบอกว่ามันมีอยู่แล้ว ในที่สุดก็ทำตามคำแนะนำ
conda update anaconda
ฉันทำสิ่งนี้ในพรอมต์คำสั่งของ Windows 10 แต่สิ่งต่าง ๆ ควรคล้ายกันใน Mac OS X
ในอดีตฉันพบว่ามันค่อนข้างยากที่จะพยายามอัปเกรดแบบแทนที่
หมายเหตุ: กรณีใช้งานของฉันสำหรับ Anaconda เป็นสภาพแวดล้อม Python แบบ all-in-one ฉันไม่ได้กังวลกับสภาพแวดล้อมเสมือนจริงที่แยกจากกัน หากคุณใช้conda
เพื่อสร้างสภาพแวดล้อมสิ่งนี้อาจเป็นอันตรายเนื่องจากconda
สร้างสภาพแวดล้อมที่มีการเชื่อมโยงอย่างหนักภายในAnaconda/envs
ไดเรกทอรีของคุณ
ดังนั้นหากคุณใช้สภาพแวดล้อมคุณอาจต้องการส่งออกสภาพแวดล้อมของคุณก่อน หลังจากเปิดใช้งานสภาพแวดล้อมของคุณทำสิ่งที่ชอบ:
conda env export > environment.yml
หลังจากสำรองสภาพแวดล้อมของคุณ (ถ้าจำเป็น) คุณสามารถลบ Anaconda เก่าของคุณ (มันง่ายมากที่จะถอนการติดตั้ง Anaconda):
$ rm -rf ~/anaconda3/
และแทนที่ด้วยการดาวน์โหลด Anaconda ใหม่เช่น Linux, 64 บิต:
$ cd ~/Downloads
$ wget https://repo.continuum.io/archive/Anaconda3-4.3.0-Linux-x86_64.sh
( ดูที่นี่เพื่อดูข้อมูลล่าสุด )
จากนั้นดำเนินการ:
$ bash Anaconda3-4.3.0-Linux-x86_64.sh
ฉันใช้Mac OS Mojave
4 ขั้นตอนเหล่านี้ทำงานสำหรับฉัน
conda update conda
conda install python=3.6
conda install anaconda-client
conda update anaconda
วิธีที่ดีที่สุดที่ฉันพบ:
source activate old_env
conda env export > old_env.yml
จากนั้นประมวลผลด้วยสิ่งนี้:
with open('old_env.yml', 'r') as fin, open('new_env.yml', 'w') as fout:
for line in fin:
if 'py35' in line: # replace by the version you want to supersede
line = line[:line.rfind('=')] + '\n'
fout.write(line)
จากนั้นแก้ไขด้วยตนเองname: ...
บรรทัดแรก ( ) และบรรทัดสุดท้าย ( prefix: ...
) เพื่อแสดงชื่อสภาพแวดล้อมใหม่ของคุณและเรียกใช้:
conda env create -f new_env.yml
คุณอาจจำเป็นต้องลบหรือเปลี่ยน pin เวอร์ชันของแพ็กเกจสองสามแบบด้วยตนเองซึ่งold_env
พบว่าเวอร์ชันที่ยึดหมุดไว้นั้นเข้ากันไม่ได้หรือขาดหายไปสำหรับเวอร์ชัน Python ใหม่
ฉันหวังว่าจะมีในตัววิธีที่ง่ายขึ้น ...