urutan jalur pencarian python di Debian

Saya memiliki dua modul google.protobuf di Debian saya (peregangan).

  1. /usr/local/lib/python2.7/dist-packages/google
  2. /home/myuser/.local/lib/python2.7/site-packages/google (diinstal dengan pip --user)

Saya ingin mengimpor 2, tetapi python selalu memberi saya 1, sedangkan ipython mengimpor 2. Saya sudah mencoba mengatur PYTHONPATH sedemikian rupa sehingga /home/myuser/.local/lib/python2.7/site-packages/ menjadi yang pertama di dalamnya, tetapi tidak berhasil.

Apakah ada cara untuk memaksa python mencari $HOME/.local/lib/python2.7/site-packages/ saya terlebih dahulu?


person weitang114    schedule 14.01.2016    source sumber


Jawaban (1)


Ya. Lihat di sini untuk penjelasan resmi tentang bagaimana python menentukan modul mana yang akan diimpor terlebih dahulu: https://docs.python.org/2/tutorial/modules.html#the-module-search-pathkk

Lihat di sini untuk mengetahui cara mengubah perilaku default tersebut: http://www.hasenkopf2000.net/wiki/python/how-override-pythons-module-import-order/

Dari dua solusi yang disediakan di situs hasenkopf, solusi kedua tidak terlalu bermasalah jika Anda berubah pikiran tentang modul mana yang ingin Anda gunakan. Anda cukup mengedit file daripada harus mengingat tautan simbolik mana yang Anda buat. Secara singkat, kodenya adalah:

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

Anda menempatkannya di bagian atas skrip Anda.

person neallred    schedule 18.01.2016