2009-09-08 5 views
0

Je ne voulais pas installer les modules python en utilisant easy install, les liens symboliques dans les packages de site ou PYTHONPATH.
Donc, j'essaye quelque chose que je veux faire au système, alors n'importe quelle installation d'application est faite localement. Notez que le mot de passe root n'est requis qu'une seule fois ici.façon simple d'installer des applications python sans utiliser le chemin PYTHON ou muli symlink dans le paquet-site

d'abord créer un symblink de .../pythonX.Y/site-packages/mymodules ->/home/moi/lib/python_related

Alors, je crée un répertoire appelé

/home/me/lib/python_related/ 

là:

/home/me/lib/python_related 
/home/me/lib/python_related/__init__.py 
/home/me/lib/python_related/django_related/ 
/home/me/lib/python_related/django_related/core 
/home/me/lib/python_related/django_related/core/Django1.0 
/home/me/lib/python_related/django_related/core/Django1.1 
/home/me/lib/python_related/django_related/core/mycurrent_django -> Django1.1/django 
/home/me/lib/python_related/django_related/apps 
/home/me/lib/python_related/django_related/apps/tagging 
/home/me/lib/python_related/django_related/apps/tagging/django-tagging-0.2 
/home/me/lib/python_related/django_related/apps/tagging/django-tagging-0.3 
/home/me/lib/python_related/django_related/apps/tagging/mycurrent_tagging -> django-tagging-0.3 

maintenant, voici le contenu de:

/home/me/lib/python_related/__init__.py 

========================================== 
import sys, os 

# tell us where you keep all your modules and this didn't work as it gave me 
# the location of the site-packages 
#PYTHON_MODULE_PATH = os.path.dirname(__file__) 
PYTHON_MODULE_PATH = "/home/me/libs/python_bucket" 

def run_cmd(cmd): 
     """ 
     Given a command name, this function will run the command and returns the output 
     in a list. 
     """ 
     output = [] 
     phdl = os.popen(cmd) 
     while 1: 
       line = phdl.readline() 
       if line == "": 
         break 
       output.append(line.replace("\n", "")) 
     return output 

def install(): 
     """ 
     A cheesy way of installing and managing your python apps locally without 
     a need to install them in the site-package. All you'd need is to install 
     the directory containing this file in the site-package and that's it. 
     Anytime you have a python package you want to install, just put it in a 
     proper sub-directory and make a symlink to that directory called mycurrent_xyz 
     and you are done. (e.g. mycurrent_django, mycurrent_tagging .. etc) 
     """ 
     cmd = "find %s -name mycurrent_*" % PYTHON_MODULE_PATH 
     modules_to_be_installed = run_cmd(cmd) 
     sys.path += modules_to_be_installed 

install() 
======================================================= 

Maintenant, dans tout nouveau projet python, il suffit d'importer vos mymodules et cela attire toutes les applications que vous avez dans le répertoire ci-dessus avec le lien symbolique approprié. De cette façon, vous pouvez avoir plusieurs copies d'applications et utiliser simplement mycurrent_xyz à celui que vous voulez utiliser.

Maintenant, voici la question. Est-ce une bonne façon de le faire?

Répondre

4

Jetez un oeil à virtualenv.

Il peut faire ce que vous cherchez.

Questions connexes