ฉันพบว่าตัวเองพิมพ์import numpy as np
เกือบทุกครั้งที่เปิดเครื่องล่ามงูหลาม ฉันจะตั้งค่าตัวแปล python หรือ ipython เพื่อให้นำเข้าโดยอัตโนมัติได้อย่างไร
ฉันพบว่าตัวเองพิมพ์import numpy as np
เกือบทุกครั้งที่เปิดเครื่องล่ามงูหลาม ฉันจะตั้งค่าตัวแปล python หรือ ipython เพื่อให้นำเข้าโดยอัตโนมัติได้อย่างไร
คำตอบ:
ใช้ตัวแปรสภาพแวดล้อมPYTHONSTARTUP จากเอกสารอย่างเป็นทางการ:
หากนี่คือชื่อของไฟล์ที่อ่านได้คำสั่ง Python ในไฟล์นั้นจะถูกเรียกใช้งานก่อนที่พร้อมต์แรกจะแสดงในโหมดโต้ตอบ ไฟล์ถูกดำเนินการในเนมสเปซเดียวกับที่มีการเรียกใช้คำสั่งแบบโต้ตอบเพื่อให้สามารถใช้อ็อบเจ็กต์ที่กำหนดหรืออิมพอร์ตในไฟล์ได้โดยไม่ต้องมีคุณสมบัติในเซสชันแบบโต้ตอบ
ดังนั้นเพียงสร้างสคริปต์ python ด้วยคำสั่ง import และชี้ตัวแปรสภาพแวดล้อมไปที่มัน ต้องบอกว่าอย่าลืมว่า 'Explicit ดีกว่าโดยนัยเสมอ' ดังนั้นอย่าใช้พฤติกรรมนี้สำหรับสคริปต์การผลิต
สำหรับ IPython ดูนี้สอนเกี่ยวกับวิธีการทำไฟล์ ipython_config
env PYTHONSTARTUP="~/.startup.py"
ไม่ได้ผลสำหรับฉัน
export PYTHONSTARTUP=~/.python_shell_startup.py
เพื่อตั้งค่าตัวแปร
สำหรับ ipython มีสองวิธีในการบรรลุเป้าหมายนี้ ทั้งสองเกี่ยวข้องกับไดเร็กทอรีคอนฟิกูเรชันของ ipython ซึ่งอยู่ใน~/.ipython
.
~/.ipython/profile_default/startup/
เพื่อความง่ายฉันจะใช้ตัวเลือก 2 สิ่งที่คุณต้องทำคือวางไฟล์.py
หรือ.ipy
ไฟล์ใน~/.ipython/profile_default/startup
ไดเร็กทอรีและมันจะถูกเรียกใช้โดยอัตโนมัติ ดังนั้นคุณสามารถวางimport numpy as np
ในไฟล์ธรรมดา ๆ ได้และคุณจะมี np ในเนมสเปซของพรอมต์ ipython ของคุณ
ตัวเลือก 2 จะใช้งานได้จริงกับโปรไฟล์ที่กำหนดเอง แต่การใช้โปรไฟล์ที่กำหนดเองจะช่วยให้คุณสามารถเปลี่ยนข้อกำหนดในการเริ่มต้นและการกำหนดค่าอื่น ๆ ตามกรณีเฉพาะได้ แต่ถ้าคุณต้องการเสมอเหมือนnp
จะมีให้คุณแล้วโดยทั้งหมดใส่ไว้ในไดเรกทอรีเริ่มต้น
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า ipython เอกสารมีคำอธิบายที่สมบูรณ์มากขึ้น
~/.config/ipython/profile_default/startup/
ไม่ใช่~/.ipython/profile_default/startup/
ฉันใช้ไฟล์ ~ / .startup.py ดังนี้:
# Ned's .startup.py file
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")
pp = pprint.pprint
จากนั้นกำหนด PYTHONSTARTUP = ~ / .startup.py และ Python จะใช้เมื่อเริ่มเชลล์
คำสั่งการพิมพ์อยู่ที่นั่นเมื่อฉันเริ่มเชลล์ฉันได้รับการแจ้งเตือนว่ามีผลบังคับใช้และสิ่งที่นำเข้าแล้ว pp
ลัดเป็นประโยชน์จริงๆเกินไป ...
~
ใช้แทน$HOME
ผลงานได้ แต่แทนที่จะเป็นเส้นทางสัมพัทธ์นี้ฉันต้องใช้เส้นทางสัมบูรณ์บน MacOS, fish และ python3
ในขณะที่การสร้างสคริปต์เริ่มต้นที่กำหนดเองเช่นravenac95 แนะนำเป็นคำตอบทั่วไปที่ดีที่สุดสำหรับกรณีส่วนใหญ่ แต่จะไม่ทำงานในสถานการณ์ที่คุณต้องการใช้ไฟล์from __future__ import X
. หากบางครั้งคุณทำงานใน Python 2.x แต่ต้องการใช้การแบ่งที่ทันสมัยมีทางเดียวที่จะทำได้ เมื่อคุณสร้างโปรไฟล์แล้วให้แก้ไขprofile_default
(สำหรับ Ubuntu ที่อยู่ใน~/.ipython/profile_default
) และเพิ่มสิ่งต่อไปนี้ที่ด้านล่าง:
c.InteractiveShellApp.exec_lines = [
'from __future__ import division, print_function',
'import numpy as np',
'import matplotlib.pyplot as plt',
]
เป็นทางเลือกที่ง่ายกว่าสำหรับคำตอบที่ยอมรับบน linux:
เพียงกำหนดนามแฝงเช่นใส่alias pynp='python -i -c"import numpy as np"'
ไฟล์ ~ / .bash_aliases ของคุณ จากนั้นคุณสามารถเรียกใช้ python + numpy ด้วยpynp
และคุณยังสามารถใช้เพียง python กับpython
. พฤติกรรมของสคริปต์ Python ไม่ถูกแตะต้อง
PYTHONSTARTUP
ถูกเรียกใช้ในโหมดโต้ตอบเท่านั้นดังนั้นพฤติกรรมของสคริปต์ python จึงไม่ถูกแตะต้อง แต่อย่างใด นอกจากนี้ยังสามารถสร้างนามแฝงโดยใช้การอ้างอิงไฟล์:alias pynp='PYTHONSTARTUP="~/.startup.py" python'
คุณสามารถสร้างสคริปต์ python ตามปกติimport_numpy.py
หรืออะไรก็ได้ที่คุณต้องการ
#!/bin/env python3
import numpy as np
จากนั้นเปิดใช้งานด้วย-i
ธง
python -i import_numpy.py
วิธีนี้จะช่วยให้คุณมีความยืดหยุ่นในการเลือกเฉพาะโมดูลที่คุณต้องการสำหรับโครงการต่างๆ
ในฐานะที่เป็นravenac95กล่าวถึงในของเขาคำตอบของคุณทั้งสองสามารถสร้างโปรไฟล์แบบกำหนดเองหรือปรับเปลี่ยนโปรไฟล์เริ่มต้น คำตอบนี้คือมุมมองอย่างรวดเร็วของคำสั่ง Linux ที่จำเป็นในการimport numpy as np
ทำงานโดยอัตโนมัติ
หากคุณต้องการใช้โปรไฟล์แบบกำหนดเองที่เรียกว่าnumpy
ให้เรียกใช้:
ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy
หรือหากคุณต้องการแก้ไขโปรไฟล์เริ่มต้นเพื่อนำเข้า numpy เสมอ:
echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython
ดูบทช่วยสอนการกำหนดค่าIPythonเพื่ออ่านรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าโปรไฟล์ ดู.ipython/profile_default/startup/README
เพื่อทำความเข้าใจว่าไดเร็กทอรีเริ่มต้นทำงานอย่างไร
ipython
คำขอเริ่มต้นของฉันคือ
ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False
--pylab
เป็นipython
ตัวเลือกมาระยะหนึ่งแล้ว มันนำเข้าnumpy
และ matplotlib
(ส่วนของ) ฉันได้เพิ่ม--Inter...
ตัวเลือกจึงไม่ใช้นำเข้าตั้งแต่ฉันชอบที่จะใช้อย่างชัดเจน*
np....
ซึ่งอาจเป็นทางลัดนามแฝงหรือสคริปต์