2010-09-15 13 views
10

Python'da bir kitaplık yazıyorum ve dosya sistemindeki ortak bir konumda bulunmasını istiyorum. ŞimdiPython'un yoluna kalıcı olarak dosya eklemek

>>> import mylib 

Bunu yapmak için, ben bunu anlıyoruz:

senaryom Dan

, sadece yapmak istediğim

>>> import sys 
>>> sys.path.append(r'C:\MyFolder\MySubFolder') 
>>> import mylib 

Ama yok Bunu her zaman yapmak zorunda kalmak istiyorum.

Soru: python'un sys.path klasörüne kalıcı olarak nasıl bir klasör ekleyebilirim? Bunun bir ortam değişkeni olacağını düşünürdüm ama bulamıyorum.

Kolay olması gerektiği gibi görünüyor, ancak nasıl yapılacağını öğrenemiyorum.

cevap

10
+0

Mükemmel diyelim. Aradığım şey bu. – riwalk

+0

Linux için çalışıyor mu? "PYTHONPATH = ~/pythons/ " ekledim .zshrc'ye ekledim (echo $ PYTHONPATH onu da iade et). Sonra sys.path yazdırıyorum ve o yok. :/ – xliiv

+1

Tamam, Linux çalışır. .zshrc'de 'export' komutunu eklemedim. Bu garip bir şey çünkü $ PATH'u değiştiriyorum ve 'ihraç etmenize' gerek yok. Herhangi bir fikir? – xliiv

5

Windows PYTHONPATH değişkeni ayarlamak için bir öğretici var . site modül sys.path ekleyerek ilgilenir bir yöntem sunar

; (Ben de taleb ile sekme tamamlama kurmak için kullanabilirsiniz varolan yolu üzerinde herhangi bir yere konabilir, ve istediğiniz herhangi bir kurulum görevlerini yapabilirsiniz.) yineleme olmadan ve .pth dosyalarla:

import site 
site.addsitedir(r'C:\MyFolder\MySubFolder') 
+0

Ayrıca mükemmel ... kontrol etmek için hangi kararı vereceğinizden emin olun ... – riwalk

3

başka olasılık senin sitecustomize.py yılında sys.path değiştirmek için, Python başlangıç ​​zamanı olarak yüklenen bir komut dosyası: Eğer burada örnekte verilen yolundan deducing

+0

Geçerli yola bir dosya eklenirse bir seçenek vardı, neden yolu değiştirmeyi denemekten rahatsız olurdum? Daha da kötüsü, bu satırı yazdığım her python senaryosuna eklemek istediğim şey nedir? Üzgünüm dostum ... çok zarif değil. – riwalk

+0

@ Stargazer712: Er ... "sitecustomize.py", Python tarafından otomatik olarak çalıştırılıyor. Her Python betiğine bir satır eklemeniz gerekmez. Bütün nokta bu. – bobince

+0

belki de bu kütüphanenin tipik bir yükleyici kullanarak kurulduğu ve bir ortam değişkenini değiştirmenin bir dosyayı düzenlemekten çok daha kolay (ve daha fazla işlem benzeri) olduğu söylenemez bir gerekliliktir. – riwalk

1

ne kadar genel bilmiyorum, ama benim kabuk başlatırken okunduğu ortalıkta bir "usercustomize" dosyası var. Belki de sadece "ortam değişkeni" nin kulağa korktuğu için bir acemi olduğumdan dolayı ... Neyse, bu şekilde sys.path'i nasıl değiştirdiğimi anladım.

Ancak, dediğim gibi, ne kadar genel olduğunu bilmiyorum. Windows 7 üzerinde python (x, y) yüklü python 2.7.3 var. Ve bu dosya

C'de geçerli:> Kullanıcılar> Me> Appdata> Dolaşım> Python> Python27> sitepackages> (Dikkat, Appdata olan gizli klasör)

ve dosya, dediğim gibi, "usercustomize.py olduğunu "Bu dosyada özel bir şey yok. Benim durumumda, sadece benim 3 ithal yolları ise:

import sys 
sys.path.append('C:\\Users\\blablabla\\LPlot') 
sys.path.append('C:\\Users\\bliblibli\\MTSim') 
sys.path.append('C:\\Users\\blobloblo\\XP') 

çok yardımcı olur umarım ... Ve değilse, vurma bana, ben% 100 newb değilim. Veya 99.99%

+0

hmmm aslında sadece konsolun başlatılmasında "okuma" değil, sys aslında başlattığımda henüz içe aktarılmadı ... Neyse, 3 klasörlerim sürekli olarak benim sys.path'ımda ... Yani bir şekilde çalışıyor ... –

+0

StackOverflow'a Hoş Geldiniz! Yardım isteğiniz övgüye değerdir, ancak doğru olup olmadıklarından emin olmadığınız bir soruya cevap göndermemelisiniz. Cevabınızı "ne kadar genel olduğunu bilmiyorum" ile sürdürmeniz gerekiyorsa, bu soruya cevap vermek için henüz yeterince deneyimli olmadığınızı gösteren bir işarettir. Ayrıca, bu soru neredeyse üç yıl önce sorulmuş (ve cevaplandırılmıştır); Buna başka bir cevap eklemek, uzun zamandır, şimdiye kadar diğer konulara geçmeye başlayan asıl soru sorucuya yardımcı olmayacaktır. :-) – rmunn

+0

Üzgünüm ... Ama aslında bir gün için koyduğum gibi bir cevap arıyordum; çünkü bu dosyanın bir yerde var olduğunu bildiğim için, onu bir daha bulana kadar (eskiden kullanılmış bir şekilde kullanmamıştım). Bu yüzden belki bir başkası için yararlı olacağını düşündüm. Ve bunun için yeni bir konu açmak istemedim, bu çok benzer olduğunda ... –

İlgili konular