2010-09-15 10 views
10

He escrito una biblioteca en python y quiero que resida en una ubicación común en el sistema de archivos.Agregar carpeta a la ruta de Python permanentemente

Desde mi guión, sólo quiero hacer:

>>> import mylib 

Ahora entiendo que con el fin de hacer esto, yo puedo hacer esto:

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

Pero no lo hago quiero tener que hacer eso todo el tiempo.

La pregunta es: ¿cómo puedo agregar una carpeta al sys.path de python de forma permanente? Me imagino que sería una variable de entorno, pero no puedo encontrarlo.

Parece que debería ser fácil, pero no puedo encontrar la manera de hacerlo.

Respuesta

10

La variable de entorno PYTHONPATH lo hará.

+0

Perfecto. Eso es lo que estaba buscando. – riwalk

+0

¿Funciona para Linux? Agrego "PYTHONPATH = ~/pythons/ " a mi .zshrc (echo $ PYTHONPATH también lo devuelve). Luego imprimo sys.path y no está allí. :/ – xliiv

+1

Ok, funciona en Linux. No incluí el comando 'exportar' en mi .zshrc. Es extraño porque estoy cambiando $ PATH y no hay necesidad de 'exportarlo'. ¿Alguna idea? – xliiv

3

Otra posibilidad es modificar la sys.path en su sitecustomize.py, una secuencia de comandos que se carga como el tiempo de inicio de Python . (Se puede poner en cualquier lugar en su camino existente, y se puede realizar ninguna tarea de configuración que le gusta; lo uso para configurar la implementación del tabulador con readline también.)

El módulo site ofrece un método que se encarga de añadir a sys.path sin duplicados y archivos con .pth:

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

Si fuera una opción agregar un archivo a la ruta actual, ¿por qué siquiera me molestaría en tratar de cambiar la ruta? Y lo que es peor, ¿qué podría hacer que quisiera agregar esa línea a cada script de Python que escribo? Lo siento, amigo ... no muy elegante. – riwalk

+0

@ Stargazer712: Er ... 'sitecustomize.py' es ejecutado automáticamente por Python. No tiene que agregar una línea a cada script de Python. Ese es todo el punto. – bobince

+0

Tal vez sea por un requisito tácito que esta biblioteca se instaló utilizando un instalador típico, y la modificación de una variable de entorno es mucho más fácil (y más como una transacción) que la edición de un archivo. – riwalk

1

no sé cómo es en general, pero tengo un archivo "usercustomize" por ahí que se lee cuando se inicia mi concha. Tal vez es solo porque soy un novato para quien la "variable de entorno" suena aterradora ... De todos modos, así es como modifico permanentemente mi sys.path

Pero como dije, no sé qué tan general es. Tengo Python 2.7.3, instalado con python (x, y) en windows 7. Y este archivo se encuentra en

C:> Usuarios> Me> Datos de programa> Roaming> Python> python27> sitepackages> (Ojo, es Appdata carpeta oculta)

y el archivo, como se ha dicho, es "usercustomize.py "No hay nada especial en ese archivo. En mi caso, sólo mis 3 caminos importados:

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

creo que sirve también ... Y si no, no me pegues, estoy 100% Novato. O digamos 99.99%

+0

hmmm, en realidad no es simplemente "leer" al iniciar mi consola, ya que sys no se importa aún cuando lo inicio ... De todos modos, mis 3 carpetas están permanentemente en mi sys.path ... Así que de alguna manera está funcionando ... –

+0

¡Bienvenido a StackOverflow! Su deseo de ayudar es encomiable, pero no debe publicar respuestas a una pregunta cuando no esté seguro si son correctas. Si tiene que iniciar su respuesta con "No sé qué tan general es", es una señal de que aún no tiene suficiente experiencia para responder esta pregunta. Y además, esta pregunta fue hecha (y respondida) hace casi tres años; agregar otra respuesta no es probable que ayude al encuestador original, que ya ha pasado a otros temas. :-) – rmunn

+0

Lo siento ... Pero en realidad había estado buscando una respuesta como la que puse por un día; porque sabía que este archivo tenía que existir en alguna parte, hasta que lo volviera a encontrar (ya lo había usado en el pasado y ya no lo podía encontrar). Entonces pensé que tal vez sería útil para otra persona. Y no quería abrir un nuevo tema para él, cuando este era tan similar ... –

Cuestiones relacionadas