2010-11-23 33 views
0

Supposons que je suis dans ~/programming/ass1 et que l'exécutable se trouve dans ~/programming/ass1/seattle/seattle_repy/repy.py.Créer un lien symbolique vers un programme

J'ai essayé de créer un lien symbolique comme si

ln -s seattle/seattle_repy/repy.py repy 

pour être en mesure de taper

python repy restrictions.test example.1.1.repy 

au lieu de

python seattle/seattle_repy/repy.py restrictions.test example.1.1.repy 

Mais il ne fonctionne pas (je reçois " python: impossible d'ouvrir le fichier '/ home/philipp/Bureau/Uni/NTM/UE/Uebungsblatt 3/safe_check.py': [Errno 2] Aucun fichier ou répertoire de ce type "). Ainsi, repy.py ne trouve pas safe_check.py.

Est-ce possible?

Cheers, Philipp

+0

Où est safe_check.py et comment l'appelez-vous – Mark

+0

Il est également dans seattle/seattle_repy/et il est appelé par repy.py. –

Répondre

1

Vous devez FROB sys.path pour ajouter le chemin contenant les modules, mais il est probablement plus facile de faire un script shell qui appelle exec python ~/programming/ass1/seattle/seattle_repy/repy.py.

+0

Merci pour le conseil. Je l'ai résolu avec un script bash dans ~/programming/ass1/repy.sh

 #!/bin/bash exec python ~/programming/ass1/seattle/seattle_repy/repy.py $1 $2 

0

Merci pour les conseils Ignacio et Mark. Je l'ai résolu avec le script bash suivant dans ~/programmation/ASS1

 
#!/bin/bash 
exec python ~/programming/ass1/seattle/seattle_repy/repy.py [email protected] 

pour obtenir enfin ce que je veux je copiais dans/usr/bin et créé un lien symbolique vers elle:

sudo cp repy.sh /usr/bin/ 
sudo ln -s /usr/bin/repy.sh /usr/bin/repy 

Alors maintenant, je peux juste dire repy restrictions.test example.2.1.repy et ça va marcher.

+0

Vous devriez citer les paramètres. Ou mieux encore, utilisez '" $ @ "', qui passera tous les paramètres. –

+1

Pas "$ @", mais "" $ @ "'. Les guillemets sont importants car ils empêchent les arguments avec des espaces d'être divisés. –

+0

En général, vous devriez laisser '/ usr/bin' et'/bin' dans le système et éviter d'y installer des éléments. Cela rend souvent les mises à niveau plus faciles. Vous pouvez utiliser '/ usr/local/bin', ou' $ HOME/bin', selon que d'autres personnes voudront l'utiliser aussi. –