ฉันจะเปิดใช้งาน Virtualenv ภายในเทอร์มินัลของ PyCharm ได้อย่างไร


110

ฉันได้ตั้งค่า PyCharm สร้าง Virtualenv ของฉัน (ไม่ว่าจะผ่านคำสั่ง virtual env หรือโดยตรงใน PyCharm) และเปิดใช้งานสภาพแวดล้อมนั้นเป็น Interpreter ของฉัน ทุกอย่างทำงานได้ดี

อย่างไรก็ตามถ้าฉันเปิดเทอร์มินัลโดยใช้ "Tools, Open Terminal" แสดงว่าเชลล์พร้อมต์ที่ให้มานั้นไม่ได้ใช้ virtual env ฉันยังคงต้องใช้source ~/envs/someenv/bin/activateภายใน Terminal นั้นเพื่อเปิดใช้งาน

อีกวิธีหนึ่งคือการเปิดใช้งานสภาพแวดล้อมในเชลล์และเรียกใช้ PyCharm จากสภาพแวดล้อมนั้น สิ่งนี้ "ใช้งานได้" แต่ค่อนข้างน่าเกลียดและหมายความว่าฉันมีปัญหาใหญ่หากฉันเปลี่ยนสภาพแวดล้อมหรือโปรเจ็กต์จาก PyCharm: ตอนนี้ฉันใช้สภาพแวดล้อมที่ไม่ถูกต้องทั้งหมด

มีวิธีอื่นที่ง่ายกว่ามากในการให้ "Tools, Open Terminal" เปิดใช้งานสภาพแวดล้อมเสมือนโดยอัตโนมัติหรือไม่

คำตอบ:


95

แก้ไข:

อ้างอิงจากhttps://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal , PyCharm 2016.3 (เผยแพร่เมื่อพฤศจิกายน 2016) ได้รับการสนับสนุน virutalenv สำหรับเทอร์มินัลนอกกรอบ

Auto Virtualenv รองรับ bash, zsh, fish และ Windows cmd คุณสามารถปรับแต่งค่ากำหนดเชลล์ของคุณได้ในการตั้งค่า (การตั้งค่า) | เครื่องมือ | เทอร์มินอล


วิธีการเก่า:

สร้างไฟล์.pycharmrcในโฮมโฟลเดอร์ของคุณด้วยเนื้อหาต่อไปนี้

source ~/.bashrc
source ~/pycharmvenv/bin/activate

ใช้พา ธ Virtualenv ของคุณเป็นพารามิเตอร์สุดท้าย

จากนั้นตั้งค่าการตั้งค่าเชลล์ -> การตั้งค่าโครงการ -> เส้นทางเชลล์ไปที่

/bin/bash --rcfile ~/.pycharmrc

9
ขอบคุณ! ฉันไม่ได้คิดที่จะลบล้างไฟล์ rc ของเชลล์ เพื่อให้สนับสนุน pycharm ที่ทำงานกับหลายโปรเจ็กต์ได้ดีขึ้นซึ่งแต่ละโปรเจ็กต์อาจมี Virtualenv ที่แตกต่างกันฉันจะเรียกไฟล์ ".pycharmrc" ซึ่งแตกต่างกันและอาจใส่ลงในไดเรกทอรี env เอง ~/pycharmenv/bin/terminalactivateดูเหมือนเป็นตัวเลือกที่ดี
Chris Cogdon

1
Pycharm 4 มี Virtualenvs ที่รวมอยู่ใน IDE ดูคำตอบของฉันสำหรับข้อมูลเพิ่มเติม
เสียเงิน

1
@PeterGibson คำตอบของ pferate ไม่มีส่วนเกี่ยวข้องกับคำถามของ OP ปัญหาคือเทอร์มินัลไม่ใช่ตัวแปล Python การรวม venv นั้นมีมาก่อน PyCharm 4 แล้วคำตอบของคุณใช้ได้ผล
norbert

1
นี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุดยกเว้นว่าฉันจะวางไว้.pycharmrcในโฟลเดอร์โฮมโปรเจ็กต์เพื่อที่ฉันจะได้มีไฟล์ที่แตกต่างกันสำหรับแต่ละโปรเจ็กต์ ในโปรเจ็กต์ที่กำหนดค่าอย่างถูกต้องไม่จำเป็นต้องระบุพา ธ ที่สมบูรณ์ไปยัง.pycharmrcไฟล์
tchakravarty

1
@SiminJie, PyCharm 2016.3.2 มีตัวเลือกดังกล่าวจากกล่อง ไปที่: settings -> Tools -> Terminal และตรวจสอบให้แน่ใจว่าได้เปิดใช้งานตัวเลือก "เปิดใช้งาน Virtualenv" แล้ว
renskiy

45

อัปเดต:

ค่ากำหนดในการตั้งค่า (ค่ากำหนด) | เครื่องมือ | Terminal อยู่ทั่วโลก
หากคุณใช้ venv สำหรับแต่ละโปรเจ็กต์อย่าลืมใช้ตัวแปรพา ธ ปัจจุบันและชื่อ venv เริ่มต้น:

"cmd.exe" /k ""%CD%\venv\Scripts\activate"" 

สำหรับผู้ใช้ Windows: เมื่อใช้ PyCharm กับสภาพแวดล้อมเสมือนคุณสามารถใช้/Kพารามิเตอร์cmd.exeเพื่อตั้งค่าสภาพแวดล้อมเสมือนโดยอัตโนมัติ

PyCharm 3 หรือ 4: Settings, Terminal, และเพิ่มDefault shell/K <path-to-your-activate.bat>

PyCharm ที่ 5: Settings, Tools, Terminalและเพิ่มการ/K <path-to-your-activate.bat>Shell path

PyCharm 2,016.1 2,016.2 หรือ: Settings, Tools, Terminalและเพิ่ม""/K <path-to-your-activate.bat>""การShell pathและเพิ่ม (ใจคำพูด) เพิ่มเครื่องหมายคำพูดรอบ ๆ cmd.exe ด้วยทำให้:

"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""


ในกรณีนี้%CD%คือไดเร็กทอรีการทำงานปัจจุบันโปรดดูที่คำสั่งเชลล์ของ Windows เพื่อรับพา ธ แบบเต็มไปยังไดเร็กทอรีปัจจุบัน?
bad_coder

40

สำหรับผู้ใช้ Windows เมื่อใช้ PyCharm และสภาพแวดล้อมเสมือนภายใต้ Windows คุณสามารถใช้พารามิเตอร์ / k เพื่อ cmd.exe เพื่อตั้งค่าสภาพแวดล้อมเสมือนโดยอัตโนมัติ

ไปที่ตั้งค่า, /K <path-to-your-activate.bat>เทอร์มิเชลล์เริ่มต้นและเพิ่ม

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

อัปเดต:

หมายเหตุ: ขณะนี้ Pycharm รองรับสภาพแวดล้อมเสมือนโดยตรงและดูเหมือนว่าจะทำงานได้ดีสำหรับฉันดังนั้นวิธีแก้ปัญหาของฉันจึงไม่จำเป็นอีกต่อไป


นี่เป็นสิ่งที่ดี แต่ก็ต่อเมื่อคุณมี Virtualenv เพียงอันเดียวสำหรับโปรเจ็กต์ทั้งหมดของคุณ การตั้งค่าเชลล์เริ่มต้นจะแชร์ข้ามโปรเจ็กต์
MartinM

7

จากคำตอบของปีเตอร์และการทดลองฉันได้หา "วิธีแก้ปัญหาทั่วไป" ที่ดีซึ่งแก้ปัญหาต่อไปนี้:

  • เรียกคืนลักษณะการทำงานของเชลล์ล็อกอิน โดยปกติ PyCharm จะรันเชลล์ล็อกอิน แต่ --rcfile หยุดสิ่งนี้ สคริปต์ยังคงใช้ --rcfile แต่จะพยายามเลียนแบบพฤติกรรม INVOCATION ของล็อกอินเชลล์
  • ไม่จำเป็นต้องสร้าง rcfile สำหรับแต่ละสภาพแวดล้อม
  • ไม่จำเป็นต้องอัปเดตการตั้งค่าโปรเจ็กต์หากคุณเปลี่ยนสภาพแวดล้อม

วางสคริปต์นี้ลงในไดเร็กทอรี bin ที่ใดที่หนึ่ง เช่น ~ / bin / pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi
if [ -r "~/.bash_profile" ] ; then
    . ~/.bash_profile
elif [ -r "~/.bash_login" ] ; then
    . ~/.bash_login
elif [ -r "~/.profile" ] ; then
    . ~/.profile
fi
ACTIVATERC=`cat .idea/workspace.xml | perl -n -e 'print "\$1/bin/activate" if m:option name="SDK_HOME" value="\\\$USER_HOME\\\$(.*)/bin/python":'`
if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

จากนั้นตั้งค่าเส้นทาง Shell ของ PyCharm เป็น:

/bin/bash --rcfile ~/bin/pycharmactivate

1
ขอบคุณ! สิ่งนี้ใช้ได้ผลสำหรับฉันหลังจากหลายชั่วโมงของความพยายามที่ไม่ประสบความสำเร็จในการคิดว่าจะเริ่มต้น bashrc และ bash โปรไฟล์ อย่างไรก็ตามมันเกิดข้อผิดพลาดและไม่พบ virtual env ของฉันดังนั้นฉันจึงแก้ไขเช่นนั้นคุณสามารถบอกฉันได้ไหมว่ามันใช้ได้หรือไม่? if [ -r "/etc/profile" ] ; then . /etc/profile ; fi if [ -r "~/.bash_profile" ] ; then . ~/.bash_profile elif [ -r "~/.bash_login" ] ; then . ~/.bash_login elif [ -r "~/.profile" ] ; then . ~/.profile fi source ~/learnp/project1/venv/bin/activate
zerohedge

@zerohedge: สคริปต์ของคุณจะทำงานได้ดี แต่ได้รับการแก้ไขให้เป็น "project1" Virtualenv ของคุณ สคริปต์ด้านบนควรจะทำการตรวจจับอัตโนมัติ แต่มีข้อสันนิษฐานหลายประการที่เกิดขึ้น: ไดเร็กทอรีการทำงานเริ่มต้นคือตำแหน่งของไดเร็กทอรี ".idea"; รูปแบบของไฟล์ workspace.xml ไม่เปลี่ยนแปลงอย่างมีนัยสำคัญ น่าเสียดายที่ดูเหมือนว่า pycharm เวอร์ชัน 5 ได้ทำการเปลี่ยนแปลงที่สำคัญในพื้นที่นั้น ตอนนี้ฉันไม่สามารถเข้าใจได้ว่าข้อมูลอยู่ที่ไหน
Chris Cogdon

ฉันไม่คิดจะเปลี่ยนการเพิ่มของฉันขึ้นอยู่กับโปรเจ็กต์เนื่องจาก Shell Path to เป็นโปรเจ็กต์เฉพาะด้วย ฉันได้รับเพียงข้อความแจ้งว่า "bash 3.2 $:" ก่อนที่จะพบสคริปต์ของคุณโดยไม่มีการระบุไดเร็กทอรีปัจจุบันของฉันหรือความคล้ายคลึงกับข้อความแจ้ง Terminal ของฉัน ขอขอบคุณอีกครั้ง!
zerohedge

7

ขณะนี้ PyCharm 4 มี Virtualenvs ที่รวมอยู่ใน IDE แล้ว เมื่อเลือกล่ามโครงการของคุณคุณสามารถสร้างเพิ่มหรือเลือก Virtualenv ได้ พวกเขาได้เพิ่ม "Python Console" ที่ทำงานในตัวแปลโครงการที่กำหนดค่าไว้

ข้อมูลเพิ่มเติมที่นี่


11
สิ่งนี้ตอบโจทย์ OP อย่างไร? ยังคงต้องดำเนินการsource /path/to/venv/bin/activateด้วยตนเองในเทอร์มินัล
58

6

ขอบคุณคริสสคริปต์ของคุณใช้ได้กับบางโปรเจ็กต์ แต่ไม่ใช่ทั้งหมดในเครื่องของฉัน นี่คือสคริปต์ที่ฉันเขียนและหวังว่าทุกคนจะพบว่ามันมีประโยชน์

#Stored in ~/.pycharmrc 

ACTIVATERC=$(python -c 'import re
import os
from glob import glob

try:
  #sets Current Working Directory to _the_projects .idea folder
  os.chdir(os.getcwd()+"/.idea") 

  #gets every file in the cwd and sets _the_projects iml file
  for file in glob("*"): 
    if re.match("(.*).iml", file):
      project_iml_file = file

  #gets _the_virtual_env for _the_project
  for line in open(project_iml_file):
    env_name = re.findall("~/(.*)\" jdkType", line.strip())
    # created or changed a virtual_env after project creation? this will be true
    if env_name:
      print env_name[0] + "/bin/activate"
      break

    inherited = re.findall("type=\"inheritedJdk\"", line.strip())
    # set a virtual_env during project creation? this will be true
    if inherited:
      break

  # find _the_virtual_env in misc.xml
  if inherited:
    for line in open("misc.xml").readlines():
      env_at_project_creation = re.findall("\~/(.*)\" project-jdk", line.strip())
      if env_at_project_creation:
        print env_at_project_creation[0] + "/bin/activate"
        break
finally:
  pass
')

if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi

ขอบคุณสิ่งนี้ได้ผลสำหรับฉัน! ต้องทำสองสิ่งเพิ่มเติมแม้ว่า 1) เพิ่มsource /etc/profileที่จุดเริ่มต้นของไฟล์ ~ / .pycharmrc (บน Mac Yosemite) 2) ใน Pycharm edit Preferences> Tools> Terminal> Shell path to "/ bin / bash --rcfile ~ / .pycharmrc"
frnhr

ยอดเยี่ยมมากขอบคุณ! หากคุณใช้ Python 3 อย่าลืมใส่วงเล็บสำหรับฟังก์ชันการพิมพ์ ตัวฉันเองต้องใส่ "export ~ / .bashrc" ก่อนสคริปต์นี้
RaphaëlGomès

5

ฉันได้ดูคำตอบทั้งหมดข้างต้นแล้ว แต่ไม่มีคำตอบใดที่สง่างามเพียงพอสำหรับฉัน ใน Pycharm 2017.1.3 (ในคอมพิวเตอร์ของฉัน) วิธีที่ง่ายที่สุดคือเปิดSettings->Tools->TerminalและตรวจสอบShell integrationและActivate virtualenvตัวเลือกต่างๆ

ภาพ


คำตอบที่ได้รับการยอมรับจะกล่าวถึงสิ่งเดียวกันนี้ เพียงแค่ว่ามันไม่มีภาพ
Vikas Prasad

5

หากคุณใช้เวอร์ชัน windows มันค่อนข้างง่าย หากคุณมีสภาพแวดล้อมเสมือนอยู่แล้วเพียงแค่ไปที่โฟลเดอร์ให้ค้นหาactivate.batภายในScriptsโฟลเดอร์ คัดลอกเส้นทางแบบเต็มและวางในเทอร์มินัลของ pycharm จากนั้นกดEnterเสร็จแล้ว!

หากคุณต้องการสร้างสภาพแวดล้อมเสมือนใหม่:

ไปที่ไฟล์> การตั้งค่าจากนั้นค้นหาproject interpreterเปิดคลิกที่ปุ่มเฟืองและสร้างสภาพแวดล้อมทุกที่ที่คุณต้องการจากนั้นทำตามย่อหน้าแรก

เกียร์!


ตอบโจทย์มาก! ขอบคุณ! คำถามอย่างรวดเร็ว. ฉันมีสภาพแวดล้อมเสมือนจริง 3 แบบที่ฉันสร้างใน Anaconda มีแยกactivate.batสำหรับแต่ละคนหรือไม่?
user1700890

1
@ user1700890 ใช่! ในกรณีที่คุณไม่ได้เขียนทับสภาพแวดล้อมเหล่านั้นควรมีโฟลเดอร์แยกต่างหากและเป็นผลให้activate.batไฟล์แยกกัน ถ้าคุณชอบคำตอบ
อย่าลังเลที่จะโหวต

ขอบคุณฉันเพิ่งตรวจสอบไม่มีโฟลเดอร์ในScriptsโฟลเดอร์ Pycharm ยังบ่นว่าactivate.batไม่ใช่ python SDK ที่ถูกต้อง
user1700890

1
ดังนั้นฉันคิดว่าก่อนอื่นคุณควรลองค้นหาโฟลเดอร์สภาพแวดล้อมเสมือนที่สร้างขึ้นเมื่อคุณใช้ Anaconda ที่ไหนจากนั้นเรียกใช้activateไฟล์แบตช์ภายใน หรือถ้าเป็นไปได้สำหรับคุณเพียงแค่สร้างสภาพแวดล้อมใหม่
AmiNadimi

3

บน Mac คือPyCharm => Preferences ... => Tools => Terminal => เปิดใช้งาน Virtualenvซึ่งควรเปิดใช้งานตามค่าเริ่มต้น


2

ฉันเพิ่งเพิ่มสคริปต์ชื่อ pycharmactivate ในโฮมไดเร็กทอรีของฉัน ตั้งค่าของไฟล์ PyCharm (4.0.1)> การตั้งค่า> เครื่องมือ> เทอร์มินัล> พา ธ เชลล์ไปที่ / bin / bash --rcfile ~ / pycharmactivate อาจจะไม่ใช่วิธีแก้ปัญหาที่ดีที่สุดในกรณีที่คุณมีโครงการและไดเรกทอรี / ชื่อที่แตกต่างกัน แต่มันใช้ได้กับฉัน สคริปต์นี้มี 3 บรรทัดต่อไปนี้และถือว่า Virtualenv ของคุณมีชื่อเดียวกับโปรเจ็กต์ของคุณ

source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate


1

ฉันมีวิธีแก้ปัญหาที่ใช้ได้กับเครื่อง Windows 7 ของฉัน

ผมเชื่อว่าขั้ว PyCharm เป็นผลมาจากมันทำงานcmd.exeซึ่งจะโหลดของ Windows ตัวแปรและใช้รุ่นของงูใหญ่ที่พบเป็นครั้งแรกภายในว่าPATH PATHหากต้องการแก้ไขตัวแปรนี้ให้คลิกขวาที่ My Computer -> Properties -> การตั้งค่าระบบขั้นสูง -> ขั้นสูงแท็บ -> ตัวแปรสภาพแวดล้อม ...ปุ่ม ในส่วนตัวแปรระบบเลือกและแก้ไขPATHตัวแปร

นี่คือส่วนที่เกี่ยวข้องของฉันPATH ก่อนแก้ไข:

C: \ Python27 \;
C: \ Python27 \ Lib \ ไซต์แพ็คเกจ \ pip \;
C: \ Python27 \ สคริปต์;
C: \ Python27 \ Lib \ ไซต์แพ็คเกจ \ django \ bin;

... และหลังจากแก้ไขPATH(ตอนนี้มีเพียง 3 บรรทัด):

C: [project_path] \ Virtualenv-Py2.7_Dj1.7 \ Lib \ ไซต์แพ็คเกจ \ pip;
C: [project_path] \ Virtualenvs \ Virtualenv-Py2.7_Dj1.7 \ Scripts;
C: [project_path] \ Virtualenvs \ Virtualenv-Py2.7_Dj1.7 \ Lib \ site-package \ django \ bin;

ในการทดสอบสิ่งนี้ให้เปิดเทอร์มินัล windows ใหม่ ( เริ่ม -> พิมพ์cmdและกดEnter) และดูว่าใช้สภาพแวดล้อมเสมือนของคุณหรือไม่ หากได้ผลให้รีสตาร์ท PyCharmจากนั้นทดสอบในเทอร์มินัลของ PyCharm


1

นี่คือสิ่งที่ฉันกำลังทำ: สร้างไฟล์ enable_env.bat (windows, อาจจะเป็น. sh ใน linux) ในซอร์สโค้ดพับ:

/env_yourenvlocate/scripts/activate.bat

และไฟล์อื่น deactivate_env.bat:

/env_yourenvlocate/scripts/deactivate.bat

ทุกครั้งที่เปิดหน้าต่างเทอร์มินัลเพียงเรียกใช้ไฟล์ bat เพื่อเปิดใช้งาน / ปิดใช้งาน Virtualenv คุณจะอยู่ในเส้นทางซอร์สโค้ดโดยไม่จำเป็นต้องเปลี่ยนเส้นทางไปและกลับ

E:\Projects\django_study\src>active_env.bat

E:\Projects\django_study\src>../env_django_study/scripts/activate.bat
(env_django_study) E:\Projects\django_study\src>



(env_django_study) E:\Projects\django_study\src>deactive_env.bat

(env_django_study)E:\Projects\django_study\src>../env_django_study/scripts/deactivate.bat
E:\Projects\django_study\src>

1

หาก Pycharm 2016.1.4v ขึ้นไปคุณควรใช้ "default path" /K "<path-to-your-activate.bat>" อย่าลืมเครื่องหมายคำพูด


1

หากคุณย้ายโปรเจ็กต์ของคุณไปยังไดเร็กทอรีอื่นคุณสามารถกำหนดเส้นทางใหม่ผ่านกล่องโต้ตอบการตั้งค่า จากนั้นคุณต้องตั้งค่าตัวแปลโครงการนี้ในกล่องโต้ตอบแก้ไขการกำหนดค่า

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


0

อีกทางเลือกหนึ่งคือการใช้Virtualenvwrapperเพื่อจัดการสภาพแวดล้อมเสมือนของคุณ ดูเหมือนว่าเมื่อเปิดใช้งานสคริปต์ Virtualenvwrapper pycharm สามารถใช้workonคำสั่งนั้นได้จากนั้นคำสั่งง่ายๆจะพร้อมใช้งานจากคอนโซล pycharm และนำเสนอสภาพแวดล้อมเสมือนที่มีให้คุณ:

kevin@debian:~/Development/django-tutorial$ workon
django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
kevin@debian:~/Development/django-tutorial$ workon django-tutorial
(django-tutorial)kevin@debian:~/Development/django-tutorial$ 

1
อย่างไรก็ตามนั่นทำให้ฉันต้องเปิดใช้งานสคริปต์ workon ทุกครั้งที่ฉันเปิดเทอร์มินัลและรู้ว่าขณะนี้ pycharm สภาพแวดล้อมเสมือนใดใช้สำหรับรันโปรแกรมซึ่งทั้งสองอย่างนี้ฉันพยายามหลีกเลี่ยงอย่างชัดเจน
Chris Cogdon

@ChrisCogdon อาฉันเห็น
ksaylor11

0

วิธีนี้ควรใช้กับสภาพแวดล้อมเสมือนที่กำหนดเองต่อโปรเจ็กต์และไม่ได้ตั้งสมมติฐานเกี่ยวกับสภาพแวดล้อมของคุณเนื่องจากใช้ hooks ที่คุณสร้างขึ้น

ที่คุณเขียน:

  • สคริปต์ส่วนกลางที่เรียกใช้ hook
  • สคริปต์เบ็ดต่อโครงการ PyCharm (ไม่บังคับ)

เนื่องจาก PyCharm ล่าสุดปัจจุบัน (Community 2016.1) ไม่อนุญาตให้ตั้งค่า Terminal ต่อโปรเจ็กต์โดยเริ่มต้นด้วยสคริปต์ที่เรียกใช้ hook เฉพาะโปรเจ็กต์ นี่คือของฉัน~/.pycharmrc:

if [ -r ".pycharm/term-activate" ]; then
   echo "Terminal activation hook detected."
   echo "Loading Bash profile..."
   source ~/.bash_profile
   echo "Activating terminal hook..."
   source ".pycharm/term-activate"
   source activate $PYCHARM_VENV
fi

หากคุณกำลังใช้สิ่งอื่นที่ไม่ใช่ Bash ให้เรียกใช้สิ่งที่.bash_profileเทียบเท่าของคุณเองหากคุณต้องการ

ตอนนี้ตั้งค่า PyCharm "Tools -> Terminal -> Shell Path" เพื่อเรียกใช้สคริปต์นี้เช่น: /bin/bash --rcfile ~/.pycharmrc

สุดท้ายสำหรับโครงการ PyCharm .pycharm/term-activateทุกครั้งที่คุณต้องการสภาพแวดล้อมเสมือนเฉพาะการเปิดใช้งานการสร้างไฟล์ภายในรากโครงการ นี่คือเบ็ดของคุณและจะกำหนดชื่อของสภาพแวดล้อมเสมือนที่ต้องการสำหรับโครงการ PyCharm ของคุณ:

export PYCHARM_VENV=<your-virtual-env-name>

แน่นอนคุณสามารถขยายตะขอของคุณด้วยทุกสิ่งที่คุณคิดว่ามีประโยชน์ในสภาพแวดล้อมเทอร์มินัลของโครงการ PyCharm เฉพาะของคุณ


0

สำหรับสภาพแวดล้อมเสมือน conda บน Windows ตรวจสอบให้แน่ใจว่าไฟล์แบตช์ของคุณไม่ได้ถูกตั้งชื่อactivate.batเนื่องจากจะทำให้เกิดความขัดแย้งกับactivateคำสั่งconda ส่งผลให้มีการเรียกไฟล์แบตช์แบบเรียกซ้ำ

สิ่งที่เหมาะกับฉันคือเส้นทางเชลล์ต่อไปนี้:

"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""

และในไฟล์ enable-env.bat:

call activate myenvname

0

ฉันต้องการสภาพแวดล้อมเสมือนจริงแยกต่างหากสำหรับแต่ละโปรเจ็กต์และไม่สนใจมากนักที่จะมีไฟล์เพิ่มเติมเพื่ออำนวยความสะดวกนี้ วิธีแก้ปัญหาที่คุณต้องทำเพียงครั้งเดียวและใช้ได้กับทุกโครงการคือเพิ่มสิ่งต่อไปนี้ใน.bashrcหรือ.bash_profile:

if [ -d "./venv" ]; then
    source ./venv/bin/activate
fi

สิ่งนี้จะตรวจสอบว่ามีสภาพแวดล้อมเสมือนที่มีการเปิดเทอร์มินัลหรือไม่และหากเป็นเช่นนั้นจะเปิดใช้งาน (และแน่นอนว่าสามารถใช้พา ธ สัมพัทธ์อื่น ๆ ได้) การตั้งค่าเทอร์มินัลของ PyCharm สามารถปล่อยให้เป็นค่าเริ่มต้นได้


0

PyCharm 4.5.4

สร้างไฟล์. pycharmrc ในโฮมโฟลเดอร์ของคุณโดยมีเนื้อหาดังต่อไปนี้

source ~/.bashrc
source ~/pycharmvenv/bin/activate

ใช้พา ธ Virtualenv ของคุณเป็นพารามิเตอร์สุดท้าย

จากนั้นตั้งค่าการตั้งค่าเชลล์ -> การตั้งค่าโครงการ -> เส้นทางเชลล์ไปที่

/bin/bash --rcfile ~/.pycharmrc

ฉันไม่รู้ทำไม แต่มันไม่ได้ผลสำหรับฉัน PyCharm พิมพ์ข้อผิดพลาด

cmd.exe /K "<path-to-your-activate.bat>" มันใช้งานได้ แต่จะสร้าง Virtualenv เดียวกันสำหรับแต่ละโปรเจ็กต์และแม้ว่าจะไม่จำเป็นก็ตาม

นี้ใบเสร็จรับเงินจะทำงาน! แต่สตริง/env_yourenvlocate/scripts/activate.batต้องมีเครื่องหมายคำพูดแบบนี้"Full_path_to_your_env_locate\scripts\activate.bat"!

การปิดใช้งาน Virtualenv นั้นง่ายมาก - พิมพ์ 'deactivate' ในเทอร์มินัล

(virt_env) D:\Projects\src>deactivate
D:\Projects\src>

"ฉันไม่ทำไม แต่มันไม่ได้ผลสำหรับฉัน" - อาจเป็นเพราะโซลูชันนี้ดีสำหรับ linux / mac ไม่ใช่สำหรับ windows? ;)
Nir Alfasi

0

โซลูชันสำหรับ WSL (Ubuntu บน Windows)

หากคุณใช้ WSL (Ubuntu บน Windows) คุณสามารถเปิด bash เป็นเทอร์มินัลใน pycharm และเปิดใช้งาน linux Virtualenv

ใช้.pycharmrcไฟล์ตามที่อธิบายไว้ในคำตอบของ Peter Gibson เพิ่ม.pycharmrcไฟล์ในโฮมไดเร็กทอรีของคุณด้วยเนื้อหาต่อไปนี้:

source ~/.bashrc
source ~/path_to_virtualenv/bin/activate

ในไฟล์ Pycharm > การตั้งค่า> เครื่องมือ> Terminalเพิ่ม 'เส้นทางเชลล์' ต่อไปนี้:

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


Virtualenv เฉพาะโครงการ

เส้นทางไปยัง Virtualenv ของคุณ.pycharmrcไม่จำเป็นต้องเด็ดขาด คุณสามารถตั้งค่า Virtualenv เฉพาะโปรเจ็กต์โดยตั้งค่าพา ธ สัมพัทธ์จากไดเร็กทอรีโปรเจ็กต์ของคุณ Virtualenv ของฉันมักจะอยู่ในโฟลเดอร์ 'venv' ภายใต้ไดเรกทอรีโครงการของฉันดังนั้น.pycharmrcไฟล์ของฉันจึงมีลักษณะดังนี้:

แหล่ง ~ / .bashrc
 แหล่ง ~ / pycharmvenv / bin / เปิดใช้งานเส้นทาง #absolute
แหล่งที่มา. /venv/bin/activate #relative path


โบนัส: เปิด ssh tunnel โดยอัตโนมัติเพื่อเชื่อมต่อ Virtualenv เป็นตัวแปลโครงการ

เพิ่มสิ่งต่อไปนี้ใน.pycharmrcไฟล์ของคุณ:

if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
    sudo service ssh start 
fi

สิ่งนี้จะตรวจสอบว่าอุโมงค์ ssh เปิดอยู่แล้วหรือไม่และเปิดขึ้นอย่างอื่น ในไฟล์ -> การตั้งค่า -> โครงการ -> ตัวแปลโครงการใน Pycharm ให้เพิ่มตัวแปลระยะไกลใหม่พร้อมการกำหนดค่าต่อไปนี้:

+ -------------------------- + ---------------------- ----------- + ------- + ---- +
| ชื่อ: | <ชื่อล่าม> | | |
| เลือก | 'ข้อมูลรับรอง SSH' | | |
| โฮสต์: | 127.0.0.1 | พอร์ต: | 22 |
| ผู้ใช้: | <ชื่อผู้ใช้ Linux> | | |
| ประเภทการรับรองความถูกต้อง: | 'รหัสผ่าน' | | |
| รหัสผ่าน: | <รหัสผ่าน Linux> | | |
| เส้นทางล่าม Python: | <เส้นทาง Linux ไปยัง Virtualenv ของคุณ> | | |
| เส้นทางตัวช่วย Python: | <ตั้งค่าอัตโนมัติ> | | |
+ -------------------------- + ---------------------- ----------- + ------- + ---- +

ตอนนี้เมื่อคุณเปิดโปรเจ็กต์ bash ของคุณจะเริ่มต้นโดยอัตโนมัติใน Virtualenv ของคุณเปิด ssh tunnel และ pycharm จะเชื่อมต่อ Virtualenv เป็นตัวแปลระยะไกล

คำเตือน: การอัปเดตล่าสุดใน Windows จะเริ่มบริการ SshBroker และ SshProxy โดยอัตโนมัติเมื่อเริ่มต้น สิ่งเหล่านี้บล็อก ssh tunnel จาก linux ไปยัง windows คุณสามารถหยุดบริการเหล่านี้ได้ในตัวจัดการงาน -> บริการหลังจากนั้นทุกอย่างจะทำงานอีกครั้ง


0

ทางเลือกหนึ่งที่คุณมีเมื่อคุณเข้าสู่เทอร์มินัล> เรียกใช้> ดีบัก> แก้ไขการกำหนดค่า ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่

เลือกสภาพแวดล้อม conda ที่เหมาะสม .. นอกจากนี้เมื่อคุณสร้างโครงการใหม่ - ระบบจะขอให้กำหนดค่าตำแหน่งนี้

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