เส้นทางการค้นหาหลามเรียงลำดับบน Debian

ฉันมี google.protobuf โมดูลสองโมดูลบน Debian ของฉัน (ยืด)

  1. /usr/local/lib/python2.7/dist-packages/google
  2. /home/myuser/.local/lib/python2.7/site-packages/google (ติดตั้งด้วย pip --user)

ฉันต้องการนำเข้า 2 แต่ python ให้ 1 กับฉันเสมอ ในขณะที่ ipython นำเข้า 2 ฉันได้ลองตั้งค่า PYTHONPATH เพื่อให้ /home/myuser/.local/lib/python2.7/site-packages/ เป็นอันแรกในนั้น แต่ไม่ทำงาน

มีวิธีใดบ้างที่ฉันสามารถบังคับให้ python ค้นหา $HOME/.local/lib/python2.7/site-packages/ ของฉันก่อน


person weitang114    schedule 14.01.2016    source แหล่งที่มา


คำตอบ (1)


ใช่. ดูคำอธิบายอย่างเป็นทางการว่า python กำหนดโมดูลใดที่จะนำเข้าก่อนได้ที่นี่: https://docs.python.org/2/tutorial/modules.html#the-module-search-pathkk

ดูวิธีเปลี่ยนพฤติกรรมเริ่มต้นได้ที่นี่: http://www.hasenkopf2000.net/wiki/python/how-override-pythons-module-import-order/

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

import sys
# Assume path to module is
# /path/to/recent/version/of/module.py
sys.path.insert(0,"/path/to/recent/version/of")
import module

คุณวางไว้ที่ด้านบนของสคริปต์ของคุณ

person neallred    schedule 18.01.2016