Cómo agregar al comienzo de Python Path en Bash
-
26-10-2019 - |
Pregunta
Aquí está mi .bash_profile
PYTHONPATH=".:/home/miki725/django/django:$PYTHONPATH"
export PYTHONPATH
Entonces abro Python, sin embargo, el directorio que agrego .bash_profile
no es el primero:
Python 2.4.3 (#1, Sep 21 2011, 20:06:00)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for i in sys.path:
... print i
...
/usr/lib/python2.4/site-packages/setuptools-0.6c9-py2.4.egg
/usr/lib/python2.4/site-packages/flup-1.0.2-py2.4.egg
/usr/lib/python2.4/site-packages/MySQL_python-1.2.3c1-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/django_form_utils-0.1.7-py2.4.egg
/usr/lib/python2.4/site-packages/mechanize-0.2.1-py2.4.egg
/usr/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg
/usr/lib/python2.4/site-packages/mercurial-1.6-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/lxml-2.2.7-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/django_registration-0.7-py2.4.egg
/usr/lib/python2.4/site-packages/sorl_thumbnail-3.2.5-py2.4.egg
/usr/lib/python2.4/site-packages/South-0.7.2-py2.4.egg
/usr/lib/python2.4/site-packages/django_keyedcache-1.4_1-py2.4.egg
/usr/lib/python2.4/site-packages/django_livesettings-1.4_3-py2.4.egg
/usr/lib/python2.4/site-packages/django_app_plugins-0.1.1-py2.4.egg
/usr/lib/python2.4/site-packages/django_signals_ahoy-0.1_2-py2.4.egg
/usr/lib/python2.4/site-packages/pycrypto-2.3-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/django_threaded_multihost-1.4_0-py2.4.egg
/usr/lib/python2.4/site-packages/PIL-1.1.7-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/pyOpenSSL-0.11-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/ZSI-2.0_rc3-py2.4.egg
/usr/lib/python2.4/site-packages/PyXML-0.8.4-py2.4-linux-i686.egg
/usr/lib/python2.4/site-packages/pyquery-0.6.1-py2.4.egg
/usr/lib/python2.4/site-packages/pip-1.0.1-py2.4.egg
/usr/lib/python2.4/site-packages/virtualenv-1.6.1-py2.4.egg
/usr/lib/python2.4/site-packages/simplejson-2.1.6-py2.4-linux-i686.egg
/home/miki725
/home/miki725/django/django
/usr/lib/python24.zip
/usr/lib/python2.4
/usr/lib/python2.4/plat-linux2
/usr/lib/python2.4/lib-tk
/usr/lib/python2.4/lib-dynload
/usr/lib/python2.4/site-packages
/usr/lib/python2.4/site-packages/Numeric
/usr/lib/python2.4/site-packages/PIL
/usr/lib/python2.4/site-packages/gtk-2.0
>>>
>>>
>>>
>>>
>>> import django
>>> django.__file__
'/usr/lib/python2.4/site-packages/Django-1.2.1-py2.4.egg/django/__init__.pyc'
>>>
¿Cómo puedo agregar a un camino de pitón en .bash_profile
Entonces sería al principio. Esto es para alojamiento compartido. Necesito poder importar mi instalación de Django en lugar de usar el sistema predeterminado del sistema.
Gracias
Solución
Tu mejor opción es modificar sys.path
en tiempo de ejecución. En un entorno de alojamiento compartido, es común hacer esto en su archivo .wsgi. Podrías hacer algo como esto:
import sys
sys.path.insert(0, '/home/miki725/django/django')
Si agregas export PYTHONSTARTUP=/home/miki725/.pythonrc
para usted .bash_profile
, puedes agregar que tu .pythonrc
Archivo, y se ejecutará antes de que se muestre una solicitud interactiva también.
Otros consejos
Como enfoque alternativo, puede modificar sys.path
directamente del intérprete:
sys.path.insert(0,"/home/miki725/django/django")
Yo diría que tu PYTHONPATH
se está modificando cuando el sitio El módulo se importa. Por favor, eche un vistazo al usuario módulo para proporcionar una configuración específica del usuario (básicamente solo prependa los directorios que le interesa sys.path
).
Nota: user
El módulo está actualmente en desuso, pero para Python 2.4 esto debería funcionar.
Editar: solo para completar, para python> = 2.6 (user
módulo en desuso), debe crear un usercustomize.py
Archivo en su local site-packages
directorio como se explicó aquí.
Como lo indican otros, modifica el sys.path
directamente en Python como este:
sys.path.insert(0,"/home/miki725/django/django")
Pero yo creo eso virtualenv es la solución que está buscando. Esta herramienta le permite crear entornos de pitón aislados.